ARC的F 做题记录
貌似一个世纪没有更博了(。
自从集训队作业被我咕咕后 就开始到处打比赛被爆锤
补完题以后真的没大有时间做题了啊TAT
攒了几道辣鸡题(全是ARC的F)一起发出来吧
ARC060
发现答案要么是全部相同的时候是1 要么是划分成两个串 两个串用fail数组判断一下就好了
代码:咕了
ARC061
这个看题解了QAQ
我们根据每次拿出的牌计算 由于A结束 我们钦定最后一张牌是A
然后拿出来的牌数A是\(n\)张 B是\(i\)张(\(i<m\))C是\(j\)张(\(j<k\))
然后我们可以写出答案柿子
\(Ans=\sum_{i+j=0}^{m+k-1} C_{n-1+i+j}^{n-1} 3^{m+k-i} \sum_{i<m,j<k} C_{i+j}^i\)
部分分就有了 优化就是考虑当i+j变化的时候快速转移后面的那个sum
分别讨论一下\(i\)在\(m,k\)之间的位置就好了
代码:咕了
ARC062
神仙题诶 Polya定理题
结论是一个边双如果只是一个简单环的话直接polya计数 如果边数>点数的话是可以任意轮换的(手玩一下就知道了 可以固定一个把别的移好)如果是桥单独*k就可以了
代码:戳我
ARC063
因为至少空出一行or一列 所以一定会经过中线
枚举上边界 对于每一个下边界维护左端右端就可以啦 单调栈+线段树维护就ok了
代码:戳我
ARC064
直接考虑n的因数 \(f(x)\)表示循环节长度是\(x\)每次 枚举所有比它小的减掉就OK了
代码:戳我
ARC065
只要对于每个\(l_i\)求出最远的\(r_i\) 用\(f[i][j]\)表示1~i-1已经确定了 还有j个1是可动的
代码:戳我
ARC066
考虑分治维护 就是动态图的那种分治就ok
分治区间内部用斜率优化dp就可以了
代码:咕了
ARC067
垃圾题 直接单调栈+矩阵差分就好了
代码:咕了
ARC068
考虑以1为顶点建立一个V型结构(双端队列)
只用考虑前k-1个怎么取 后面的一定是个单调队列\(2^{N-K-1}\)就好了
考虑dp \(f_{i,j}\)表示已经取了\(i\)个取了的最小值是\(j\)可以选择取一个更小的值或者取剩下的最大值
直接\(n^2\)dp就好了
代码:戳我
ARC069
模板题= = 二分答案+2-SAT+线段树优化建图一气呵成
代码:戳我
ARC070
一道古早的交互经典题 每次遇到一个说别人是假的就两个人都删掉就好了 如果Unkind>=Honest就无解
代码:咕了
ARC071
每次要么是一个\(k\)(\(k>1\))后面跟若干个1 要么就是两个大于1的数结束
后缀和一下 讨论一下三种转移就ok
代码:戳我
ARC072
考虑维护单调栈 每次新加进来超了就弹队首 如果当前水温比队尾少就混到一起(显然这样比只弹队首优)
代码:戳我