codeforces
L_0_Forever_LF
一个热爱OI的OIer
展开
-
2018-2019 ICPC, NEERC, Northern Eurasia Finals 部分题解
III感觉这题非常厉害为了方便解释,做以下约定1.1.1.将全序列p1,p2...pnp_1,p_2...p_np1,p2...pn记为AAA2.2.2.将AAA的某个严格子区间记作BiB_iBi题目把 interval 定义为值域大小和区间大小相等的BiB_iBi我们定义maximal interval为不被任意一个interval完整包含的interval有一个重要结论...原创 2019-10-12 21:09:57 · 434 阅读 · 0 评论 -
codeforces 582D - Number of Binominal Coefficients
emmmmmmmmmmmmmm 这题模拟赛的时候做过 当时back的时候推柿子推得很痛苦 现在再做还是不会….不过推柿子变得熟练了很多…题解: 因为组合数可以写成阶乘的形式Cmn=n!m!(n−m)!C_n^m=\dfrac{n!}{m!(n-m)!} 又因为pp是质数,组合数能否被pkp^k整除取决于他含多少个pp作为因子 所以我们不妨先考虑阶乘n!n!含多少个pp 假设n!n!含有原创 2017-09-21 21:26:01 · 436 阅读 · 0 评论 -
codeforces 891C
给出一个无向图,每次询问图中的一个边集,是否存在包含这个边集的MST考虑怎么判断是否存在包含某一条边的MST 若他不在原图的MST上,显然只能尝试用它替换一条权值相等的,MST上的边 设他的权值为c,可以先对权< c的边先做kruskal建出生成树,用这些边将原图缩点 然后若这条边在这个缩完点的图上不是自环,就合法对于每个询问的边集,不同的边权显然互相独立 这个边集合法的充要条件是每条边合法原创 2017-11-19 17:15:00 · 785 阅读 · 0 评论 -
Codeforces 932G. Palindrome Partition
我能不能扔发链接跑啊qaq.....原创 2018-03-10 14:59:38 · 741 阅读 · 4 评论 -
Codeforces 911G. Mass Change Queries
填坑计划 1/∞原创 2018-03-12 10:51:41 · 514 阅读 · 0 评论 -
Codeforces 908E. New Year and Entity Enumeration
先不管集合T对于一个good set S,他的性质就是他里面的元素不断AND后仍然在这个集合里,且每个元素的补集都在这个集合里令f(i)表示集合S中含i的所有元素AND起来的值,f(i)是一组二进制位,且可以发现,若存在j∈f(i)(j≠i)j∈f(i)(j≠i)j\in f(i)(j\neq i),则必定有f(j)=f(i)f(j)=f(i)f(j)=f(i) 简单的证明: 反证法 ...原创 2018-03-12 11:40:46 · 616 阅读 · 0 评论 -
Codeforces 815D. Karen and Cards
给出n张卡片,每张卡片有三个属性值ai,bi,ci,求对于n张卡片里的每张卡片都有至少2项属性值严格大于他的卡片有多少种官方题解写的非常吼呀qaq,图文并茂,非常建议直接去看官方题解Link 我简单的说一下吧 我们先考虑只有一张卡片的情况 枚举c,那么对于一个确定的c,我们可以画出一个函数图像f(a),横轴是a的值,f(a)代表满足有至少两项优于这张卡片的b的取值范围是 [f(a),bm...原创 2018-03-05 20:43:43 · 355 阅读 · 0 评论 -
Codeforces 718E. Matvey's Birthday
首先有个显然的性质,任意两个点之间的距离不会超过2*颜色数-1 证明的话考虑路径序列中同种颜色的点不会超过2个然后我就跑偏了,想着去造一个颜色数相关的新图,每个点带权什么的去算…. 正解还是挺喵的考虑一对点(u,v)之间的距离d(u,v)d(u,v)d(u,v),令dis[p][c]dis[p][c]dis[p][c]表示p到颜色c的最短距离,有 d(u,v)=min(|u−v|,d...原创 2018-03-05 21:00:25 · 285 阅读 · 0 评论 -
Codeforces 765F. Souvenirs
每次询问一个区间内任意两个数差值绝对值的最小值不妨考虑一个位置iii,他和哪些位置j(j&lt;i)j(j&lt;i)j(j< i)匹配可能更新区间的答案 这里只考虑a[i]&gt;a[j]a[i]&gt;a[j]a[i]>a[j]的情况,另一种同理 可能贡献的jjj一定是一个下降子,另外还有一个不那么显然的性质,就是真正有用的jjj序列的长度不超过log&nbsp;wlog&原创 2018-04-17 21:25:45 · 339 阅读 · 0 评论 -
Codeforces 963C. Cutting Rectangle
感谢lxy教会我这题qaqw和h具体是什么不重要,先将他们离散化,然后把c[i]记成c[w][h]的形式如果有某个c[w][h]=0一定不合法,并且c[w][1]:c[w][2]:....c[w][h]c[w][1]:c[w][2]:....c[w][h]c[w][1]:c[w][2]:....c[w][h]这个比例对所有w相同,这样才存在合法方案单独考虑一种方块c[w][h],可...原创 2018-04-18 22:06:55 · 598 阅读 · 0 评论 -
Codeforces 2015 Google Code Jam Round 3 (GCJ 15 Round 3) E. River Flow
题意不知道怎么描述…. 大概就是你可以对一个长度为2k的区间(k一定要是2的幂,题目给了一个k的上界),挑中间一段长为k的或者两端各一段长度和为k,让他们区间-1,然后以2k为循环节对这个序列操作,这算一次操作,问将整个序列变成相同的所需要的最少次数假设n是2的幂,那么我们从n开始,对于当前区间[1,2i][1,2i][1,2^i],看他左右是否相同,如果相同则2i−12i−12^{i-1}...原创 2018-04-25 09:31:05 · 397 阅读 · 0 评论 -
2017 ACM-ICPC World Finals 题解
先贴官方题解:http://www.csc.kth.se/~austrin/icpc/finals2017solutions.pdfProblem L Visual Python++ bzoj4959不难发现匹配是唯一的,用set把匹配处理出来之后,横纵坐标各做一次扫描线判有没有相交或者覆盖但是边界相交的情况 O(nlogn)O(nlogn)O(nlogn)code:#inc...原创 2018-05-17 22:10:30 · 4337 阅读 · 0 评论 -
codeforces 585F. Digits of Number Pi
AC自动机和数位dp都写挂了….我是不是该退役了…问L~R有多少个数满足数字里包含一个长度至少为d/2的给定串的子串如果包含了一个长度大于d/2的子串,也一定包含长度为d/2的子串 所以相当于问L~R有多少个数满足数字里包含一个长度为d/2的给定串的子串 我们把原串所有长度为d/2的子串建到AC自动机上 因为d<=50,所以点数最大不超过25000(实际上最大值应该也比这个小很多) 所以就可原创 2017-09-21 16:47:42 · 479 阅读 · 0 评论 -
codeforces 553E - Kyoya and Train
一个有向图,走每条边有个代价,且花费的时间从1~T有个概率p[e][i],从1到n,若到达时时间超过T,则需要额外X的花费,问期望最小花费令f[i][j]表示在j时刻从i出发到达n的最小期望,因为虽然每条边花费的时间是不确定的,但至少是1,所以(i,j)这个分层图实际上是一个DAG,就可以dp了对于一条边e:u−>ve:u->v,有 f[u][t]=min(ei+∑Tj=1f[v][t+j]∗p[原创 2017-09-21 12:34:25 · 852 阅读 · 0 评论 -
Codeforces 812
A判断会不会撞到人 判一下有人走的路有没有车经过就行了 B n*(m+2)的矩形,一开始在左下角,移动一格需要1的时间,关灯不需要时间,两端可以上楼 问关掉所有的灯最少需要的时间 DP一下到第i层左端点和右端点的最短时间 细节注意一下(比如某层楼上面的楼层都不需要关灯了就可以停下来了) C 每个物品有编号xi和花费ai 若买了n个物品原创 2017-06-03 13:31:40 · 393 阅读 · 0 评论 -
codeforces 303E - Random Ranking
将坐标离散化(下文提到的坐标和区间都是离散化后的值),然后对于第i个人的区间L~R的R-L个小区间x~x+1计算答案,dp[k][x1][x2]表示前k个人(去掉第i个人)有x1个人区间小于当前区间,x2个人在当前区间的概率,然后用dp[n][x1][x2]计算一下对i的每个排名的贡献就行了 复杂度O(n5)O(n^5) (其实挺悬的,但我不会n4n^4的…)code:#include<set>原创 2017-09-22 20:18:12 · 555 阅读 · 0 评论 -
codeforces 138E. Hellish Constraints
给一个字符串s和若干限制,每个限制形如:某字符x出现的次数在l~r之间,问s的子串中恰好满足L~R个限制的有多少个我们先考虑一个限制 右端点扫过去,维护每个左端点是否满足限制 当新加入一个字符时, 如果它不是当前限制的字符,对每个左端点是否满足没有影响 如果它是,那么他会使x出现次数为l-1的变成满足,出现次数为r的变成不满足 维护一下当前字符第i次出现的位置pos[i],假设当前是第j次原创 2017-09-24 20:09:48 · 346 阅读 · 0 评论 -
codeforces 848D. Shake It!
我们发现,操作若干次后形成的世界,实际是在原来的一对点(源汇集合)的基础上,加入了许多对(pair)小世界,每一对小世界由中间的连接点和他连接的两个小世界组成,每对之间互相独立,无序,于是我们发现可以把问题不断这样划分直到一个世界就只有源汇和他们之间的边 我们用f[i][j]表示i次操作后,最小割为j的世界有多少个,他可以由某个世界添加一对或者多对规模相同的小世界得到,于是有 f[i][j]=f原创 2017-09-18 10:49:43 · 544 阅读 · 0 评论 -
codeforces 138E. Hellish Constraints
先考虑只有一个限制时,右端点扫过去,维护每个左端点是否满足限制, A[i]=0表示i开头的后缀不满足,A[i]=1表示i开头的后缀满足 那么当新加入一个字母到后缀时,若他不是当前限制的字母,则对所有左端点的答案都无影响,若他是,它会使那些之前含L-1个限制字母的后缀变得合法,含R个的变得不合法, 记录一下这个字母w第i次出现的位置las[w][i], 将这个字母加入,就是对las[now-L原创 2017-09-19 12:33:53 · 370 阅读 · 0 评论 -
codeforces 773F. Test Data Generation
%%%tourist问有多少个符合条件的集合,使an/g−na_n/g-n和an/ga_n/g,an−na_n-n奇偶性不一样 要使an/g−na_n/g-n和an/ga_n/g奇偶性不一样,只要n是奇数就行了 要使an/g−na_n/g-n和an−na_n-n奇偶性不一样,就是要使an/ga_n/g和ana_n奇偶性不一样,就是说,集合里最大的数在去掉集合的gcd后改变了奇偶性,因为奇数去掉因原创 2017-09-20 20:03:25 · 571 阅读 · 0 评论 -
codeforces 720D. Slalom
细节炸的好惨…根据只能向上或者向右走的性质,我们考虑一种朴素的做法 令f[i][j]表示走到第i列,第j行的路径数 这样做时间复杂度是O(nm)O(nm)的,而且会算重复一些路径,因为对于每个障碍的位置关系都相同的路径是视为同一路径的 先考虑怎么去重 每条路径,除非需要绕过障碍,否则我们都让他保持最低的高度,即贴着底线走,由于其只能向上或右走的性质,别的走法能走到的地方这样走也都能走到,且在原创 2017-09-20 20:52:21 · 444 阅读 · 0 评论 -
codeforces 827F. Dirty Arkady's Kitchen
给一个无向图,其中的无向边有一些出现时间,人一开始在1号点,每一时刻他都需要不断移动,通过一条无向边的时间是1,问最早能在什么时刻到达n号点(其实并不知道题解在说什么,膜完代码yy了一个感觉差不多的) 最朴素的暴力即记录v[i][j]表示在i这个时间点能否到达j,然后枚举每条边转移,复杂度是O(Tm)的 我们考虑这样做慢在哪里:每条边的生效时间让他变成了T条边,于是边的总数是Tm的 注意到,一原创 2017-09-20 21:23:18 · 555 阅读 · 0 评论 -
codeforces 833E. Caramel Clouds
英文不好..不是很懂题解里提到的那颗treap是干嘛的,还有题解说的维护一棵树,子树里什么single最大的和x相邻什么的没太看懂他在说什么…..但是yy一下然后发现可以用线段树直接弄…因为最多消除两片云,可以发现当一个区域被两片云以上覆盖后不可能产生贡献, 令single[x]表示只被x覆盖的区域长度, cross[x][y]代表只被x和y覆盖的区域长度, opt[x]代表去掉的云一定含x,原创 2017-09-12 22:05:39 · 661 阅读 · 0 评论 -
codeforces 848E. Days of Floral Colours
自己对自己的吐槽.. 注意多项式相关的题,卷积算得的东西,下标>n的项最好清零,不然容易错,多项式求逆手推错了….在求逆过程中卷积的大小都是n<<1,ln+1,每次的id的ln要带进去重新生成,NTT没处理到w[N]结果访问w[n-i*tt]时错,有地方没取模,细节处理的不好。题解部分: 先考虑一段被两对oppsite的同色花截得的长度为i的弧和他对应的另一端弧的情况: g[i]表示不跨出去连原创 2017-09-12 22:11:02 · 807 阅读 · 0 评论 -
codeforces 185C. Clever Fat Rat
观察可以发现,对于第一行的这些位置的燕麦,他们在下落的过程中相对位置是不会改变的,于是我们可以设一个方程f[i][[j][l][r]表示第一行l~r的燕麦都落到了第i行j列的格子里时,这个格子最多能往下掉多少燕麦,若在格子里的燕麦小于重量上限就是0 然后就可以dp了然后…这题出题人的数据出错了,所以要加上一些特判才能A code:#include<set>#include<map>#incl原创 2017-09-20 21:57:43 · 535 阅读 · 0 评论 -
bzoj4527: K-D-Sequence
先特判d=0的情况 然后对于d≠0: 若a[i]和a[i+1]的差不是d的倍数,即a[i]和a[i+1]在模d下不等,那么他们肯定不会在同一个kd串中,将中间断开 于是得到了若干个原串的子串数列中不能有相同的数(还是挺好处理的吧),下文的叙述省略了数列中有相同的数的处理因为每个串内的数在模d下相同,所以先将他们全部/d(这样方便处理) 因为l~r中没有相同的数,那么这个数列若要成为kd数列,原创 2017-05-07 14:40:04 · 587 阅读 · 0 评论