字符串哈希模板 Tips:可以通过正反哈希值的判断出该子串是否是个回文,也可以通过哈希值O(N)的复杂度进行字符串匹配 123456789101112131415161718192021222324252627282930313233343536const int MAXN = 1e6 + 5e3;int n;string s;ll Hash[5][MAXN], Rhash[5][MAXN];ll mod[] = 2022-04-29 #模板 #formwork
树链剖分模板 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210 2022-04-13 #模板 #formwork
CF 1661D Progressions Covering(差分+线段树) 题目链接:点击跳转 题意: 有两个长度相等的序列a,b,a序列开始全为0,b序列有题目给出,每次可以选择a中一段长度为k的序列,将该范围的数依次加上1,2,3…k,问最少多少次操作,能使对于任意i,使得ai >= bi。 思路: 最后一位只能够使用k来消除,而用k消除也恰好是最快的,那么可以从后往前开始处理,但是要怎么更新序列呢,可以使用差分来给修改的每位都加上i(操作次数),用线段树来维护 2022-04-12 #acm #codeforces
CF 1661C Water the Trees(思维) 题目链接:点击跳转 题意: 公园里有N棵树,在奇数天浇水可以使树的高度+1,偶数天+2(每天只能浇一次水,可以选择不浇),问最少需要多少天,能使得所有树的高度一致。 思路: 如果当前树与最高的那棵树的高度差为奇数,那么就意味着该树至少要占用一次奇数天(只能多,不能少),而其他的均可通过偶数天完成。 若偶数天如果大于奇数天,那么可以通过将一个偶数天拆成2个奇数天来减少时间。 为保持奇数偶数尽量相 2022-04-12 #acm #codeforces
CF 1665C Tree Infection(模拟 + 贪心) 题目链接: 点击跳转 题意: 给你一棵树,每次你可以依次进行以下操作,1.对于一个节点,如果该节点有至少一个子树被涂色(可以理解为图着色,原译不是涂色)了,那么你可以任选他的子树上的另一个节点使其被传染(可以对多个节点操作,但每个节点的子树在一次操作只能传染一次),2.任选一个节点,使其被涂色(可以选1中操作过的子树中的节点),问最少几次操作能使整棵树都被涂色。 思路: 开始想,从大的数量开始涂色 2022-04-09 #acm #codeforces
CF 1656D K-good(思维) 题目链接:点击跳转题意: 给你一个数n(2 <= n <= 1e18), 问n是不是k-good数(及分成k个数,k个数的和为n,这k个数取模k的结果均不相同),如果存在多个k成立,输出任意一个即可 思路: 如果一个数能被拆成一个奇数和一个偶数的积(奇数不能为1),该数就是k-good数。 取奇数个,如40 = 5 * 8, 取中间数为8,剩余的数可以依次改为 6 7 9 10。 2022-03-25 #acm #codeforces
CF 1654E Arithmetic Operations(枚举) 题目链接:点击跳转题意: 给出一个长度为n的序列a,问最少修改几个数字,能使得序列变成等差序列 思路: 枚举公差(我取了-300~300),用数组记录每个数字减去位置乘公差的值出现的次数,出现最多的次数就是在枚举范围内的最优解。 但是这个枚举不能太大(完整枚举2e5 * 1e5会超时),但是只枚举小范围不能保证正确,如样例3最优解的公差为-20000,那么我们可以遍历数据,取数据中 2022-03-21 #acm #codeforces
CF 1654C Alice and the Cake(模拟) 题目链接:点击跳转 题意: 爱丽丝有一块蛋糕,她要把蛋糕切成n份,每一次操作,她会选择一块蛋糕(另大小为A),将其切成两半,两块大小分别为A / 2, (A + 1) / 2,及分成整数的两半,如果原大小为奇数,则一块会大1,现在给出一个序列,问有没有可能为一块蛋糕经过n - 1次操作后得到的 思路: 由每一块拼回去会因为有不同的拼接操作无法判断,可以逆向思维,模拟一块完整的蛋糕切成现在的大小序列 2022-03-21 #acm #codeforces
Java IO 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556//--------------------------INPUT READER---------------------------------// static class FastI 2022-02-26 #acm #模板 #formwork
Codeforces Round 770 (Div.2) B.Fortune Telling 题目链接:点击跳转 题意: 有一个长度为n的数组a,对于数组中的每个数,有两种操作方法,1.x + a, 2. x ^ a(^为异或符),Alice开始拥有的数为x,Bob拥有的数为x+3,每个人必须从数组a的开始到结束每个数选择一种方式进行操作,问谁的数能变成y(题目保证成立)。 思路: 每一个数都有两种操作可能max(n) = 1e5,那么可能性有2的1e5次,但是仔细想想发现,不管是异或或是 2022-02-07 #acm #codeforces