NOIP模拟题集锦
关于NOIP的一些模拟
SC.ldxcaicai
我很菜=_=
展开
-
NOIP模拟 迅雷(kruskal/二分+并查集)
传送门题意简述:给一张带权无向图,有a,ba,ba,b两类特殊点和普通点,问使得至少有一个aaa和一个bbb连通所需要的所有边边权最小值的最大值是多少。思路:一眼发现可以二分,考虑怎么checkcheckcheck显然直接把所有大于二分值的并起来看满不满足要求。正准备写的时候想了一个更简单的,把边排个序然后从大到小加进去直到满足题意时就是答案。代码...原创 2019-01-20 14:40:48 · 194 阅读 · 0 评论 -
2018.11.08 NOIP模拟 班车(倍增+dfs+bit)
传送门对于每个点离线处理出向上走2i2^i2i班车到的最上面的点。然后每个询问(u,v)(u,v)(u,v)先把(u,v)(u,v)(u,v)倍增到刚好走不到lcalcalca的情况(有一个点如果就是lcalcalca直接特判)然后考虑最后把(u′,v′)(u',v')(u′,v′)连起来需要走一次还是两次。这个就是一个二维数点问题了。用dfsdfsd...原创 2018-11-08 23:37:05 · 237 阅读 · 0 评论 -
2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)
传送门显然只要所有点的权值加起来是0就一定有一组合法解。然后当成树随便构造就行了。至于非树边全部赋值为0就行。代码原创 2018-11-08 23:10:03 · 141 阅读 · 0 评论 -
2018.11.08 NOIP模拟 水管(简单构造)
传送门仔细读题会发现只要所有点点权之和等于0一定有解。如何构造?直接当做树来构造就行了,非树边都赋值成0就行。代码原创 2018-11-08 23:23:04 · 138 阅读 · 0 评论 -
2018.11.07 NOIP模拟 异或(数位dp)
传送门对于每个二进制位单独考虑贡献。然后对于两种情况分别统计。对于第二种要用类似数位dpdpdp的方法来计算贡献。代码原创 2018-11-07 19:20:48 · 329 阅读 · 0 评论 -
2018.11.07 NOIP模拟 分糖果(贪心)
传送门考虑 n = 2 时的情况:假定两个人分别为(a, b),(c, d),则当且仅当min(a,d) ≤ min(b,c)时,把(a, b)放在前面更优,否则把(c, d)放在前面更优然后把n = 2 的结论进行扩展。我们定义第 i 个小朋友比第 j 个小朋友小,当且仅当 min(ai,bj) <min(aj,bi),以这个规则进行排序,时间复杂度 O(nlogn)。这样得到的新队...原创 2018-11-07 19:18:28 · 369 阅读 · 0 评论 -
2018.11.07 NOIP模拟 数独(模拟)
传送门sbsbsb签到题。读题时间比写题时间长系列。写一个checkcheckcheck函数来检验当前时间段第(i,j)(i,j)(i,j)号格子能否放入kkk就行了。代码原创 2018-11-07 19:15:47 · 258 阅读 · 0 评论 -
2018.11.03 NOIP模拟 树(长链剖分优化dp)
传送门考虑直接推式子不用优化怎么做。显然每一个二进制位分开计算贡献就行。即记录fi,jf_{i,j}fi,j表示距离iii这个点不超过jjj的点的每个二进制位的0/10/10/1个数。但直接存是会爆炸的。考虑到每个数只会被用一次,所以可以考虑主席树那种复用信息的思想来继承长链后代的信息,然后短链直接暴力统计贡献就行。由于ldxldxldx蒟蒻是口胡选手只会暴力写法,因此正解差不多是照...原创 2018-11-03 22:42:26 · 247 阅读 · 0 评论 -
2018.11.03 NOIP模拟 图(bfs/最短路)
传送门显然如果AAA到BBB或者CCC到DDD走的不是最短路一定是有一段路径重合了,于是可以O(n2)bfsO(n^2)bfsO(n2)bfs出两点之间的最短距离然后枚举两个点作为重合的端点来更新答案。然而考试的时候只枚举了最短路上的点没被卡成功踩标算?如果数据强一点今天多半又垫底了233.我果然还是太菜了啊!代码...原创 2018-11-03 21:15:47 · 142 阅读 · 0 评论 -
2018.11.03 NOIP模拟 地球发动机(线性dp)
传送门考试5分钟写完。如果没这题今天多半爆零了(汗直接二分出合法的转移范围。然后用后面的状态更新前面的就可以了。代码原创 2018-11-03 21:11:50 · 158 阅读 · 0 评论 -
2018.11.02 NOIP模拟 距离(斜率优化dp)
传送门分四个方向分别讨论。每次枚举当前行iii,然后对于第二维jjj用斜率优化dpdpdp。f[i][j]=(j−k)2+mindisk2f[i][j]=(j-k)^2+mindis_k^2f[i][j]=(j−k)2+mindisk2其中mindismindismindis表示离第iii行的最短距离。这个显然可以斜率优化代码...原创 2018-11-02 16:47:30 · 165 阅读 · 0 评论 -
2018.11.02 NOIP模拟 飞越行星带(最小生成树/二分+并查集)
传送门发现题目要求的就是从下到上的瓶颈路。画个图出来发现跟去年noipnoipnoip提高组的奶酪差不多。于是可以二分宽度+并查集检验,或者直接求瓶颈。代码...原创 2018-11-02 16:44:00 · 155 阅读 · 0 评论 -
2018.11.02 NOIP模拟 优美的序列(数论+单调栈/链表)
传送门考虑如果一个区间满足最小值等于最大公约数那么这个区间是合法的。因此我们对于每一个点维护可以延展到的最左/右端点保证这一段区间的gcdgcdgcd等于这个点的值。这个可以用之前同类的链表或者用单调栈维护。代码...原创 2018-11-02 16:40:58 · 248 阅读 · 0 评论 -
2018.10.31 NOIP模拟 一些情报(倍增)
传送门题目并不难(想)其实就是用倍增维护几个树上信息。也就这么几个:子树内最长链及其后继点。子树内次长链及其后继点。子树内第三场链(也就是dzyodzyodzyo口中鬼畜的次次长链)点iii的第2j2^j2j个父亲不计算iii这棵子树的最优值−dep-dep−dep点iii的第2j2^j2j个父亲不计算iii这棵子树的最优值+dep+dep+dep点iii的第2j2^j2j个祖...原创 2018-10-31 19:27:18 · 141 阅读 · 0 评论 -
2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)
传送门如果观察到性质其实也不是很难想。然而考试的时候慌得一批只有心思写暴力233.下面是几个很有用的性质:c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0,1}c0,1+1≥c1,0≥c0,1,因为$ 10, 01 $是交替出现的。c1,0+c0,0c_{1,0 }+c_{0,0}c1,0+c0,0是000出现的次数。c0,1+c1,1...原创 2018-10-31 19:22:08 · 160 阅读 · 0 评论 -
2018.10.31 NOIP模拟 一串数字(数论+贪心)
传送门把每一个数aaa质因数分解。假设a=p1a1∗p2a2∗...∗pkaka=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}a=p1a1∗p2a2∗...∗pkak然后可以转化成a′=p1a1mod3∗p2a2mod3∗...∗pkakmod3a&amp;#x27;=p_1^{a_1mod3}*p_2^{a_2mod3}*...*p_k^{a_kmod3}...原创 2018-10-31 19:16:26 · 149 阅读 · 0 评论 -
2018.10.30 NOIP模拟 有环无向图(dijkstra+巧妙建图)
传送门建图巧妙啊。对于每个点的出边,我们将它们排序之后依次连边。这样可以把O(m2)O(m^2)O(m2)的边数变成O(m)O(m)O(m)的了。连的权值就是max(edgemax(edgemax(edge_delta,0)delta,0)delta,0)然后用边代替点跑dijkstradijkstradijkstra就行了。代码...原创 2018-10-30 18:51:21 · 323 阅读 · 0 评论 -
2018.10.30 NOIP模拟 字胡串(单调栈+容斥)
传送门对于每个点,用单调栈求出它左右第一个比他大的位置。然后对每个点O(logai)O(log_{a_i})O(logai)求出第一个拥有跟它不同二进制位的位置。然后容斥一下就行了。代码...原创 2018-10-30 18:44:42 · 219 阅读 · 0 评论 -
2018.10.30 NOIP模拟 排列树(树形dp+组合数学)
传送门考试的时候乱搞过了。其实题目就是让你求拓扑排序方案数。直接树形dpdpdp然后组合数转移一下就行了。乱搞代码原创 2018-10-30 18:30:28 · 283 阅读 · 0 评论 -
2018.10.26 NOIP模拟 图(最小生成树+线段树合并)
传送门首先最开始说的那个一条路径的权值就是想告诉你两个点之间的贡献就是瓶颈边的权值。那么肯定要用最小生成树算法。于是我考场上想了30min+30min+30min+的树形dpdpdp发现转移是优秀的nlognnlog_nnlogn,总时间复杂度O(n2logn)O(n^2log_n)O(n2logn)妙啊然后有了弃疗的想法。突然想到没有利用kruskalkruskalkruskal...原创 2018-10-26 16:13:32 · 333 阅读 · 3 评论 -
2018.10.26 NOIP模拟 瓶子 (dp/贪心)
传送门正解是dp并不想去想了。自己yy了一个贪心拿了95pts95pts95pts,唯一没过的点还只有一个地方错了,面向数据变成之后过啦!所以我讲讲如何贪心。考虑到最后都只会合并成一种颜色,所以我们直接枚举变成哪种,然后让其它的全部强制直接变成那一种就行了。欢乐95pts95pts95pts代码(加了特判)...原创 2018-10-26 16:02:31 · 170 阅读 · 0 评论 -
2018.10.26 NOIP模拟 性感手枪(搜索)
传送门vis[x][y]vis[x][y]vis[x][y]记录这个点是否在之前被搜过,且被搜过的坐标是什么。然后搜索的时候记录一个循环的下标和不循环的下标就行了。代码...原创 2018-10-26 15:55:55 · 279 阅读 · 0 评论 -
2018.10.24 NOIP模拟 小 C 的宿舍(分治)
传送门分治妙题。由于用了分治的方法,我们只用考虑左区间对右区间的贡献以及右区间对左区间的贡献。可以发现如果从中点开始向两边递推最小值并用这个区间最小值来推式子是可以推出右/左区间的所有点对左/右区间的某个点的贡献是满足一个偏序关系的。于是用一种可以支持删除查询的数据结构偷懒用了bit来维护就行了。代码...原创 2018-10-24 20:16:57 · 203 阅读 · 0 评论 -
2018.10.24 NOIP模拟 小 C 的序列(链表+数论)
传送门考虑到a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r...原创 2018-10-24 20:12:36 · 237 阅读 · 0 评论 -
2018.10.24 NOIP模拟 小 C 的数组(二分+dp)
传送门考试自己yyyyyy的乱搞的没过大样例二分+dp二分+dp二分+dp过了606060把我自己都吓到了!这么说来乱搞跟被卡常的正解比只少101010分?那我考场不打其他暴力想正解血亏啊。正解同样是二分+dp。f[i]f[i]f[i]表示i不变且前面全部满足当前要求时最少需要改几个数。然后用f[i+1]f[i+1]f[i+1]~f[n]f[n]f[n]转移一下就行了。代码...原创 2018-10-24 20:09:07 · 121 阅读 · 0 评论 -
2018.10.23 NOIP模拟 “新”的家园(缩图+dijksta/spfa)
传送门考试70分骗分写挂了=30分=全场最低。哎今天230垫底了。这题出的挺好。对于非关键点直接缩点。每次把要查的insertinsertinsert进缩好的图里面跑spfa/dijkstraspfa/dijkstraspfa/dijkstra就行了。代码...原创 2018-10-23 16:46:40 · 191 阅读 · 5 评论 -
2018.10.23 NOIP模拟 行星通道计划(bit)
传送门卡常题。成功卡掉了作死写树套树的zxy。然而对我的二维bit无能为力。直接维护两棵bit。bit1[i][j]bit1[i][j]bit1[i][j]表示左端点小于等于iii,右端点小于等于jjj的区间总数。bit2[i][j]bit2[i][j]bit2[i][j]表示左端点大于等于iii,右端点大于等于jjj的区间总数。然后简单容斥一下就行了。然后考试的时候sb了开了三棵...原创 2018-10-23 16:43:02 · 163 阅读 · 0 评论 -
2018.10.23 NOIP模拟 战争(并查集)
传送门跟bzoj1015: [JSOI2008]星球大战是同一道题啊讲道理。随便合并一下就能过了。代码原创 2018-10-23 16:39:13 · 238 阅读 · 0 评论 -
2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)
传送门好题啊。考虑前面的32分,直接维护后缀trietrietrie树就行了。如果#号不在字符串首?只需要维护第一个#前面的字符串和最后一个#后面的字符串。分开用两棵trie树并且维护第一棵树上当前点到根的路径上的所有点在第二棵树上的对应点。于是支持对子树求和、对到根的一条链求和两种查询就行了用dfs序+树状数组差分来支持这些操作.代码...原创 2018-10-20 16:48:05 · 168 阅读 · 0 评论 -
2018.10.20 NOIP模拟 面包(数学期望)
传送门把方差的式子拆开。方差=平方的期望-期望的平方。显然只用维护点对的个数和总方案数就行了。利用分步的思想来统计。要统计覆盖一个矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x1,y1,x2,y2)的方案数只需要统计左上角在矩形(xmin,ymin,x1,y1)(x_{min},y_{min},x1,y1)(xmin,ymin,x1,y1)中,右上角在矩形(x2,y2...原创 2018-10-20 16:41:41 · 229 阅读 · 0 评论 -
2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门听说是最长反链衍生出的对偶定理就能秒了。本蒟蒻直接用线段树模拟维护的。对于第一维排序。维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解。代码...原创 2018-10-20 16:29:20 · 206 阅读 · 1 评论 -
2018.10.19 NOIP模拟 比特战争(kruskal)
传送门考完发现是sbsbsb题啊。直接考虑优化状压的转移。可以证明最优解一定在求最小生成树的时候取得。因此再最小生成树时维护一下连通块的最值统计答案就行了。代码...原创 2018-10-19 19:09:29 · 229 阅读 · 0 评论 -
2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)
传送门不得不说神仙出题人DZYODZYODZYO出的题是真的妙。f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法总数。然后有f[i][l][k1+k2]=∑f[i][j][k1]∗f[j][l][k2]f[i][l][k1+k2]=\sum f[i][j][k1]*f[j][l][k2]f[i][l][k1+...原创 2018-10-19 19:06:24 · 170 阅读 · 0 评论 -
2018.10.19 NOIP模拟 加密(模拟)
传送门直接按hashhashhash函数反着算回去就行了。加法用exgcdexgcdexgcd,异或直接枚举二进制位。代码原创 2018-10-19 18:10:52 · 218 阅读 · 0 评论 -
2018.10.17 NOIP模拟 管道(状压dp)
传送门状压dp好题。怎么今天道道题都有点东西啊对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%%设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当前在jjj号点的状态总数。然后枚举一个不在集合中的点转移。但是直接这样做会算错。为什么呢?因为我们没有考虑状压时其它子树的影响。因此再记一个数组g[i][j]g[i][j]g[i][j]表...原创 2018-10-17 18:59:48 · 218 阅读 · 0 评论 -
2018.10.17 NOIP模拟 发电机(概率dp)
传送门考试空间开大了爆零不然只有30分爆栈?话说这题真的坑1e7没法写dfsdfsdfs其实很好推式子。考虑每个点安一个发动机的概率,推一波式子做个等比数列求和什么的可以证明出来是严格的1size\frac {1} {size}size1其中sizesizesize表示子树的大小。因此答案为:∑i=1n1size[i]\sum _{i=1} ^n \frac {1} {size[i]...原创 2018-10-17 18:50:33 · 165 阅读 · 0 评论 -
2018.10.16 NOIP模拟 长者(主席树+hash)
传送门考试的时候开始sb的以为需要可持久化trietrietrie树,发现建树时空都是O(n2)O(n^2)O(n2)的。然后发现由于每次只从原来的字符串改一个字符。因此直接主席树维护区间hashhashhash值。sortsortsort的时候在主席树上二分比大小。如果左子树hashhashhash值相同递归比右子树,否则走左子树,因为左子树的字典序的贡献更大。代码...原创 2018-10-16 14:25:33 · 305 阅读 · 0 评论 -
2018.10.16 NOIP模拟 华莱士(并查集)
传送门按照题意模拟维护最小的环套树森林就行了。然而考试的时候naivenaivenaive瞎写了一个错误的贪心。代码原创 2018-10-16 14:21:03 · 235 阅读 · 0 评论 -
2018.10.16 NOIP模拟 膜法(组合数学)
传送门原题,原题,全TM原题。不得不说天天考原题。其实这题我上个月做过类似的啊,加上dzyodzyodzyo之前有讲过考试直接切了。要求的其实就是∑i=lr(ii−l+k)\sum _{i=l} ^{r} \binom {i} {i-l+k}∑i=lr(i−l+ki)转化一下。由于(ii−l+k)=(il−k)\binom {i} {i-l+k}=\binom {i} {l-k}(...原创 2018-10-16 14:15:42 · 463 阅读 · 0 评论 -
2018.10.12 NOIP模拟 数据结构(线段树)
传送门sb线段树题居然还卡常。修改操作直接更新区间最小值和区间标记下传即可。询问加起来最多5e65e65e6个数。因此直接询问5e65e65e6次最小值就行了。代码...原创 2018-10-12 19:35:36 · 124 阅读 · 0 评论