首页 > TAG信息列表 > NOIP2018
NC21467 [NOIP2018]货币系统
题目 原题地址:[NOIP2018]货币系统 题目编号:NC21467 题目类型:完全背包 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 1.题目大意 给出一些货币,问简化后还剩多少类型,即去除可以由其他面额表示的货币 2.题目分析 转移方程:f[j]+=f[j-a[i]] 面额为j的货币P5021 [NOIP2018 提高组] 赛道修建 思路简记
发现答案具有单调性,尝试一下二分答案能不能做 二分答案 \(t\) 后,问题的关键就变成最多能找到多少条长度大于等于 \(t\) 的赛道 我们先假设整棵树以 \(1\) 为根 把样例的图放出来: 我们可以发现一个性质: 如果一个链,它经过了结点 \(i\) 的父结点,同时包含了 \(i\) 到子结点的某条边,那P5024 [NOIP2018 提高组] 保卫王国
传送门 思路 如果没有强制,那就是一个简单的树形DP,我们用 \(f[i][0/1]\) 表示 \(i\) 的子树内,\(i\) 选或不选的最小代价;用 \(g[i][0/1]\) 表示整个树减去 \(i\) 的子树,\(i\) 选或不选单最小代价。这类似于换根DP 有了强制,说明我们的DP有一些状态不可取,虽然我们不能退回去再做一次DP5017 [NOIP2018 普及组] 摆渡车 题解
P5017 [NOIP2018 普及组] 摆渡车 题目 [NOIP2018 普及组] 摆渡车 题目描述 有 \(n\) 名同学要乘坐摆渡车从人大附中前往人民大学,第 \(i\) 位同学在第 \(t_i\) 分钟去 等车。只有一辆摆渡车在工作,但摆渡车容量可以视为无限大。摆渡车从人大附中出发、 把车上的同学送到人民大学、再[NOIP2018]标题统计
[NOIP2018]标题统计 1.题目2.分析3.代码C 1C 2 用gets()函数 4.总结5.更新日志 1.题目 题目链接 题号:NC21469 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个P5016 [NOIP2018 普及组] 龙虎斗(C语言)
题目见https://www.luogu.com.cn/problem/P5016 代码: #include <stdio.h> long long a[100005],n,m,p,s1,s2,sum=0,ret; int main() { int i; scanf("%lld",&n); for(i=1;i<=n;i++) { scanf("%lld",&a[i]); } scanf("%lld%lld%洛谷P5019 [NOIP2018 提高组] 铺设道路
题目描述 春春是一名道路工程师,负责铺设一条长度为 n 的道路。 铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n 块首尾相连的区域,一开始,第 i 块区域下陷的深度为 di。 春春每天可以选择一段连续区间[L,R][L,R] ,填充这段区间中的每块区域,让其下陷深度减少 1。P5024 [NOIP2018 提高组] 保卫王国
思路: 首先想到每次询问两个点后就从这两个点开始往上爬,沿路更新 dp 值即可。 #include <bits/stdc++.h> #define For(i,a,b) for(int i=a;i<=b;i++) #define Rev(i,a,b) for(int i=a;i>=b;i--) #define clr(a,v) memset(a,v,sizeof(a)) #define Freopen(file) \ freopen(file".in【解题报告】NOIP2018
【解题报告】NOIP2018 她开始变了…… Day1 T1 铺设道路 思路 CCF狠起来连自己都抄 就是2013年的积木大赛么 甚至都是春春幼儿园…… #include <iostream> using namespace std; int main() { int n,a,last=0,ans=0; cin>>n; for(int i=1;i<=n;i++) { c洛谷 P5018 [NOIP2018 普及组] 对称二叉树(树哈希)
传送门 传送门 判断节点u的子树是否是对称二叉树的方法: 判断hash1[l[u]]是否等于hash2[r[u]]。 其中hash1中存的是按照根左右的顺序的哈希值,hash2存的是按照根右左顺序的哈希值。 当两个hash值相等时,即为对称二叉树。 单哈希和双哈希貌似都不太稳定,而用自然溢出即可AC本题。 AC代【题解】P5018 [NOIP2018 普及组] 对称二叉树
在 szkzyc 的帮助下 A 了!!!!! 主要思路: 枚举以 $1~n$ 个结点为根结点的子树,判断这个子树是不是对称的,如果是,就计算这个子树的结点数量。通过打擂台的方式,算出最大对称二叉子树的节点数。 需要定义的变量和函数: 1. ans : 判断这个子树是否为对称的变量。 2. check( ) 函数:判断这个luogu P5021 [NOIP2018 提高组] 赛道修建
题面传送门 最大值最小不难想到二分。 然后考虑在lca处进行路径的合并。 对于一个lca,有一个贪心,就是子节点能合并的一定直接合并,能单链的一定单链。 因为一条链上去是不一定能合并,但是在这里一定能合并。 然后合并从小到大能合并就合并即可。用一个multiset维护就好了。 时间复杂洛谷 P5017 [NOIP2018 普及组] 摆渡车(斜率优化dp)
传送门 解题思路 设dp[i]表示在第i秒发车时前面的人一共等候了多少分钟。 朴素方程就是枚举 \(j=0\to (i-m)\) \[dp[i]=min(dp[i],dp[j]+i\times(cnt[i]-cnt[j])-(a[i]-a[j])) \]其中 \(cnt[i]\) 为前 i 秒的人数,\(a[i]\) 为前 i 秒的所有人的到达时间的和。 把式子拆开并移项,就Voldermod的NOIP2018原创模拟赛 解题报告
目录Voldermod的NOIP2018原创模拟赛 解题报告Day1Day1T1Day1T2Day1T3Day2 Voldermod的NOIP2018原创模拟赛 解题报告 无意间发现了这场模拟赛,就做了一下。 传送门如下: Day1 \(\qquad\) Day2 Day1 个人感觉Day1较为简单,更像是普及组的难度。 Day1T1 很显然的一题,只要求一下数位和模P5020 [NOIP2018 提高组] 货币系统 题解
前情提示:会TLE,吸口氧可以过 先想到:对于一个系统,当且仅当前面的数凑得出来这个数 之后就像一个完全背包了 Code: #include<algorithm> #include<bitset> #include<cctype> #include<cerrno> #include<clocale> #include<cmath> #include<complex> #include<cstdio> #inclP5020 [NOIP2018 提高组] 货币系统
Problem 自行阅读P5020 货币系统 Solution 不难发现就是去掉可以用别的货币表示的货币。 # include <bits/stdc++.h> using namespace std; const int N = 105; int T; int n,a[N]; int can[25005]; int main(void) { scanf("%d",&T); while(T--) { scanf("P5020 [NOIP2018 提高组] 货币系统
如果某种面额的货币可以被同样存在于货币系统中的一些面额更小的货币表示出,那么它删去与否等价。 当不能删时,从小到大考虑,因为不能出现面额更小的货币,所以该种面额的货币是必要的。 所以从小到大跑完全背包,每次判断是否必要即可。 尝试了一种二进制拆分(这里其实是倍增)加 bitset 优[NOIP2018 提高组] 保卫王国
[NOIP2018 提高组] 保卫王国 深受启发的题解; DP的集大成者。 倍增做法:\(O((n+m)\ log\ n)\) 首先,这道题最原始的问题就是经典的最大独立集问题。没有上司的舞会。 我们考虑DP:设\(dp(u,0)\)代表节点\(u\)没被选上,\(dp(u,1)\)代表结点\(u\)被选上,然后转移。 时间复杂度为\(O(n)\)NOIP2018普及组复赛 龙虎斗 C++
NOIP2018普及组复赛 龙虎斗 原题链接 轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有NOIP2018 提高组题解
Day1-T1 铺设道路 给定一个长为 \(n\) 的数组 \(d\) ,每次可以选择一段连续区间 \([L,R]\) 并全部加一。问最少几次能将整个数组变成 \(0\) . \(1\leq n\leq 1e5,0\leq d_i\leq 1e4\) Thoughts & Solution 一个很显然的想法是,如下图将所有的凹陷部分以尽可能连续的横向方块填充:(数据【NOIP2018】保卫王国 题解(树形DP+倍增)
题目大意:给定一棵含有$n$个结点的树,每个结点有权值$p_i$。要求驻扎军队,一条边连接的两结点必须至少有一个驻扎军队。现在有$q$次询问,每次规定两个点$a,b$,分别要求它们必须驻扎/不驻扎$(0/1)$。问每次驻扎的最小费用。$n,q\leq 10^5$ ------------------------ 如果没有询问,那就是# NOIP2018_旅行
解: 观察数据范围,图的形态为树或基环树 当为树时,显然,从1号点类似于贪心dfs一遍即可 当为基环树时,一定有一边不会被经过,所以标记所有环上的边 再枚举删哪一条边,然后按树一样dfs即可 代码: 满目疮痍的代码 对于原题来说,还需要各种优化卡常 发现普通卡常效果不大,程序98%以上的时间都NOIP2018普及组摆渡车题解
题解又双叒叕来了! 每天一个小题解,你学废了吗? 其实我刚开始看题时,是酱紫的 我想我大概是废了。 肯定是要对t 排序的。 最初想法肯定是f[i] 表示前i个人全上车或到站的最小等待时间。 但你能够发现如果不给出上一班车的时间的话f 根本转移不了。 那就f[i][j] 表示最后一班车j[NOIP2018] 摆渡车 - 斜率优化dp
有 \(n\) 个人,分别在 \(t_i\) 时刻到达始发站。摆渡车从始发站到终点站再回到始发站需要 \(m\) 分钟。你可以自由安排摆渡车每一次出发的时间。求等车时间总和的最小值。\(n\leq 500, m\leq 500, t_i \leq 4 \times 10^6\) Solution 设 \(f[i]\) 表示摆渡车最后一次出发时间是 \(i[bzoj5466] [loj#2955] [NOIP2018] 保卫王国
题意简述 \(n\) 个点的树,每个点有点权。 要求选若干个点,满足任意两个有边相连的点中至少选一个,要选的所有点点权和最小。 \(m\) 个询问,每个询问强制规定两个点是否选,求最小点权和。 \(n,m \leq 10^5\) 想法 动态 \(DP\) ,算是比较模板的题了…… 模板戳这里 朴素的方程为 \[ f[u][