01 2023 档案
摘要:某一道CF染色题的加强版,现在会了
阅读全文
摘要:P3966 [TJOI2013]单词 ###题意 给出一堆的单词,求出每个单词在这堆单词里面出现的次数。 ###思路 建立一颗树,首先找出每个出现的次数,然后从最小面开始进行遍历,从而进行累加,就可以直接求出每一个的个数。 比如:ab,abbcab,这里ab在第二个里面出现了两次,首先就可以直接求出
阅读全文
摘要:可持久化01tire,原理和可持久化线段树一样,只是细节需要注意
阅读全文
摘要:Power Strings ###题意 求最大的循环节 ###代码 如果是循环的,也就是S=TTTTT 那么ne[i]=TTTT,所以也就是前面的那一段长度。 如果不相同,也就是abc,那么%的话,一定时为0的,妙 ###代码 #include <bits/stdc++.h> using names
阅读全文
摘要:回文大师 ###关键 1.正着处理,因为题目要求是倒着相同,所以倒着进行匹配就可以了,这个真的是惊艳到我了。 2.正常思路的KMP是很难处理的,但是这里是能匹配多长,就把多长的给计算上就可以了。 3.然后就是答案的计算,不是找所有的子串,而是从i开头后的最大的长度,也就是如果[1,2]可以,那么不能
阅读全文
摘要:栗酱的数列 ###关键 差分处理,kmp查找 ###代码 #include <bits/stdc++.h> using namespace std; const int M=2e5+5; int a[M],b[M]; int c[M],d[M]; int ne[M]; void init(int n
阅读全文
摘要:E - Sugoroku 3 ###关键 其实也就是正常的投色子问题,从后面转移到前面,只是需要用一个后缀和进行优化,懂期望dp后还是挺好写的。 ###代码 #include <bits/stdc++.h> using namespace std; const int M=2e5+5; #defin
阅读全文
摘要:The Human Equation ###关键 赛后随便猜了一下,竟然过了。只能说当时还是太急了,毕竟对E多少有点害怕。 不行,以后要到能出E的水平 ###代码 #include <bits/stdc++.h> using namespace std; #define int long long
阅读全文
摘要:多个优化,枚举所有的组合
阅读全文
摘要:P1251 餐巾计划问题 ###关键 感觉是一个很好的题目,但是理解的还不是很深刻,很像一种减法 1.毛巾不会多买,因为是直接连向了y点,所以数量是保证的 2.把直接买的和向下传递进行分开,从而形成了一种减法,但是两者又互不干扰,也就是数量上是一定满足条件的 ###代码 #include <bits
阅读全文
摘要:P2754 [CTSC1999]家园 / 星际转移问题 ###关键 一个是需要建立分层图,但是分层图如何建立? 使用一个while循环,对每次的人数跑一次就可以了 挺奇妙的 ###代码 #include <bits/stdc++.h> using namespace std; const int N
阅读全文
摘要:###关键 用到了有向完全图的一些性质定理,还有就是缩点 可以有两种理解: 1.大的肯定可以,然后判断这个点可不可以,问一定可以的就行了,如果可以把win打死,那就一定可以(度数相同的点,性质是一样的,这个不太懂) 2.找缩点之后入度为0的那个集合,也就是起点,这个就是比较玄学了。内部的边是i*(i
阅读全文
摘要:969. 志愿者招募 ###关键 费用怎么构造的不是很懂,但是是个无源汇上下界可行流,先记着,感觉很不错的题目 ###代码 #include <bits/stdc++.h> using namespace std; const int N=1e4+5,M=1e6+5,inf=1e9; int h[N
阅读全文
摘要:###关键 这种有因果关系的,确实是用图论,但是我是想用topo 最后连边失败 这里是分成多个连通块,每个连通块的点数必须和边数相同 而且如果已经算过贡献,就不在重复计算了 ###代码 //每一个环的点数和边数都必须要相同 //如果这个环已经乘过贡献了,那就不在次计算贡献,直接标记为1就可以了 //
阅读全文