02 2022 档案
摘要:题目:Piotr's Ants 蚂蚁转头走,其实可以看做他们交换灵魂后接着往前走,同样发现,既然他们的速度相同,那么在数轴上相对位置不会改变(碰面会改变方向),那就好办了。 先把初始状态排序,id都记录下来,再把结束状态排序,对应的l,r,turing标记,然后输出的时候只需要输出结束状态的dy[i
阅读全文
摘要:题目:[HAOI2008]糖果传递 光看题几乎没有思路,但是显然到最后每个人手中一定有 d=s/n个糖果(s为所有人糖果总和),不妨设2号给1号x2个糖果,3号给2号x3个.....1号给n号x1个,那么显然a1-x1+x2=d,a2-x2+x3=d 这不就是个n元n次方程组,但是不是,最后一个方程
阅读全文
摘要:题目:[SCOI2007]降雨量 这题比较坑,分几种情况,但是可以总起来说,分开写,两个月份都没出现,maybe,否则如果两个月份都大于[l+1,r-1]的最大值,如果两个月份差值=r-l输出,true,否则maybe,否则false 代码: #include <cstdio> #include <
阅读全文
摘要:题目:Secret Message 老师说的trie树入门题 对于每个密码,存入trie树,每个字符对应编号i,则sum[i],最后结尾的编号为j,cnt[j] 查询,每个字符对应编号为i,不存在直接返回ret,否则,ret+=cnt[i](某个密码是此查询的前缀),最后返回答案ret+sum[j]
阅读全文
摘要:题目:吃奶酪 状压dp实现,dp[i][j]表示走过状态i,停到了j的位置的最小价值。枚举状态,起点终点,转移dp[i][j]=min{dp[i-(1<<s)][k]+dis(s,k)} 其中(s!=k,dis(s,k)表示s和k的欧几里得距离)。 时间复杂度O(n2*2n),跑的还算快。 代码:
阅读全文
摘要:题目:[JSOI2007]字符加密 很常见的做法,破环为链,然后以2n为总长再后缀排序,然后对于SA[i] < n 的,说明第i小后缀的编号是小于n的,也就是说,以i开头的编号是合法的,那么输出s[SA[i]+n-1]即可。 代码: #include <cstdio> #include <cstdl
阅读全文
摘要:今天打CF去了,但是很菜,只做了三题。赛后一分钟做出了第四题,wa了,改了一下下,过了 第一题就是对应的小写字母在大写字母前出现。 第二题直接dfs。 第三题dp,f[i][j]表示以第i个数开始加了j次的最大值,显然f[i][j]=max{f[i-1][j]+a[i],f[i-1][j-1]+a[
阅读全文
摘要:题目:不同子串个数 这题需要利用后缀数组求出的height的性质,我们发现对于每个后缀,他的height后的所有子串就是算在答案里,因此答案只需要求出n-height[i]-sa[i]+1的和就可以了。 代码: #include <cstdio> #include <cstdlib> #includ
阅读全文
摘要:题目:Balanced lineup 题目说的很清楚了,没有修改,直接RMQ,模板题。 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> const in
阅读全文
摘要:题目:字符串归类 发现字符串长度总数不大,因此把每个字符串有的字母分离,存放到桶中,再枚举合并即可,时间复杂度O(len) 赛时代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> const
阅读全文
摘要:题目:后缀排序 什么是后缀数组?他主要包含两个数组:sa和rk。 其中sa[i]表示将字符串后缀排序后第i小的编号,rk[i]表示后缀i的排名。 显然sa[rk[i]]=i,rk[sa[i]]=i。 例如字符串aba,他的后缀aba,ba,a,排序后a,aab,ab,此时 | i | 1 | 2 |
阅读全文
摘要:题目:[SDOI2006]线性方程组 显然,高斯消元模板题 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #define N 105 #define
阅读全文
摘要:题目:高斯消元法 高斯消元法是一个模板,下面简单介绍其内容以及实现方法。 高斯消元是求一个求多元一次方程组的解的算法。 就是形式如下的关于x1,x2...xn的方程组的解。 a11x1 + a12x2 + ... + a1nxn = b1 a21x1 + a22x2 + ... + a2nxn =
阅读全文
摘要:题目:CF1110E Magic Stones 每次操作 c[i]变成c[i-1]+c[i+1]-c[i],那么显然,c[1]和c[n]是不会改变的,因此只要c[1]和t[1],c[n]和t[n]不相等,一定是输出No。 接着分析,不妨设x=c[i-1],y=c[i],z=c[i+1],那么x,y,
阅读全文
摘要:题目:IncDec Sequence 思维题,差分好题,每次区间操作,对应差分a[l]+=v,a[r+1]-=v,在差分数组中一定有一个正负号抵消,那么我们求出差分数组中正数(负数)和,记做s1,s2。 显然,当s1,s2为0时,剩下的没有归0的元素只能与a[1]或a[n]配,答案就是abs(s1-
阅读全文
摘要:题目:[HNOI2003]激光炸弹 二维前缀和,扫大小为m*m的矩形,取最大即可。 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> const int N=5e3+5; using na
阅读全文
摘要:
题目:Fire 先预处理出每个F蔓延的时间,再bfs走迷宫。 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> const int N=1005; usi
阅读全文
