马拉车
C202044zxy
这个作者很懒,什么都没留下…
展开
-
CF1045B Space Isaac
一、题目 点此看题 二、解法 神题,我真不知道谁能看出来这题要用字符串。 首先考虑,如果对于AAA中的每一个数,都能在AAA中找到另一个数使得和为kkk,那么kkk是不能被凑出来的,这告诉我们答案是O(n)O(n)O(n)级别的且kkk一定是某一个a[1]+a[i]a[1]+a[i]a[1]+a[i] 枚举iii,a[1]a[1]a[1]和a[i]a[i]a[i]配对,a[i+1]a[i+1]a[...原创 2020-02-29 16:42:27 · 151 阅读 · 0 评论 -
CF1080E Sonya and Matrix Beauty
一、题目 点此看题 二、解法 考虑枚举左右边界,我们考虑形成的nnn个字符串。首先一个串能重排成回文串首先要满足出现次数为奇数的字符至多只有一个,如果我们把字符串hashhashhash,那么还有满足能构成一个回文串,跑manachermanachermanacher统计回文串个数即可。 这里的manachermanachermanacher写法略有不同,我们需要把不满足条件的设为−2,−3......原创 2020-02-26 10:01:50 · 207 阅读 · 0 评论 -
CF17E Palisection
一、题目 点此看题 二、解法 正难则反,用全部减去不交即可得到相交的情况数。 先跑一遍manachermanachermanacher,可以差分出以每个位置开始和结束回文串数量,然后我们扫一遍,用前面rrr的和乘上当前的lll计入贡献,注意我们只需要统计#号位置处的贡献。 #include <cstdio> #include <cstring> #include <i...原创 2020-02-25 15:53:19 · 220 阅读 · 0 评论 -
[BZOJ 2160]拉拉队排练
一、题目 点此看题 二、解法 求前kkk大的奇数回文子串,我们先跑一遍马拉车,然后差分算出每个长度的回文串,快速幂就可做了。 #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int M = 2000005; const int MOD = 19...原创 2020-02-25 15:11:09 · 133 阅读 · 0 评论 -
[国家集训队]最长双回文串
一、题目 点此看题 二、解法 先跑一遍manachermanachermanacher,维护出两个数组:l[i]l[i]l[i]表示以iii左端点的最长回文串长度,r[i]r[i]r[i]表示以iii为右端点的最长回文串长度,先打上标记然后用类似差分的办法即可维护。 易得我们只需要考虑特殊符号的l,rl,rl,r,然后我们求出每个#处l+rl+rl+r的最大值即可,时间复杂度O(n)O(n)O(n...原创 2020-02-25 11:04:07 · 161 阅读 · 0 评论