摘要:
题目大意 题解 结论:一个长度为x的最优解一定是x-1加上当前加上后贡献最大的数 证明: 设x-1集合为S,假设加上一个数x,并且x不在最终的集合里面 设最终是S+S2,把S2中最小于x中最大的x的那个拿出来,设为y 一个数的贡献可以写作ai*k+bi,如果存在i<j且ai>aj那么显然i必选 因为 阅读全文
摘要:
题目大意 题解 比较有趣的构造题,不难 首先如果按顺序放的话增长数是指数级别的,1e15绝对不行 把矩阵黑白染色,那么约束条件只存在不同颜色的格子之间,确定一种颜色之后另一种就是四个方向lcm+1 题解做法:把两个方向的对角线都分配一个质数,一个格子的值是两条对角线的积,这样一个格子是n^4*常数级 阅读全文
摘要:
题目大意 题解 长的有点像agc030E实际上没有任何关系,仔细地xjb玩了一两天 正难则反,考虑一个串每次把a->bb,b->aa能变成什么,把相同长度的分为一层 a->bb b->aa aa->bba,abb ab->aaa,bbb ba->aaa,bbb bb->aab,baa …… 首先可以 阅读全文
摘要:
题目大意 题解 过于巧妙 关键点:无负环=差分约束有解 由于有i->i+1的0边,所以fi>=fi+1,又因为边的绝对值不超1,所以fi<=(fi+1)+1 设f[i][j]表示当前f相同的段是[j+1,i],枚举下一段结尾k转移,负边不能连同一个块,正边只能连同块和相邻两个块的 code #inc 阅读全文
摘要:
题目描述 题解 因为晚上摸鱼去了所以没打 设i有p个0q个1,则i的EGF(乘上(p+q)后)为 \(A=0:pe^{p+q}-p\) \(A=1:pe^{p+q}+q\) 分治卷起来之后求x^k即可,特判p=q=0 code #include <bits/stdc++.h> #define fo( 阅读全文
摘要:
题目描述 题解 知道是分块之后就不难了 把n分块,对于整块建AC自动机暴力跑,散块把全部串建AC自动机之后可以线段树查子树(因为往上查要考虑那些能查那些不能所以不好搞),也可以递归子树时用 出-入 计算 空间卡一卡可以$n\sqrt n$,如果再把询问[L,R]前缀和一下之后也许可以做到线性 时间O 阅读全文
摘要:
题目大意 题解 之前在看PE的Eulerian Circle那题的时候就想过生成树建图+矩阵树计数的问题,并且还想了一些做法,然后全部木大 结论:将图黑白染色,答案就是黑/白的生成树个数之和 第二个条件等价于图中无环,生成树即可满足 第一个条件根据左上第一个格子的情况讨论,发现两种情况刚好对应黑/白 阅读全文
摘要:
题目大意 题解 直接按要求平衡即可,因为源汇可以出入所以要连n->1 贡献根据c<f和c>f讨论,一开始把c设作max(c,f),根据f的变化使c在>=f的情况下尽量靠近原c code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c 阅读全文
摘要:
题目大意 题解 很快想出来了,但细节挺多 可以发现答案是2L的倍数,每个数与T和X有关,和T的具体值关系不大 先把T模2L,将点分成四类,从右往左下车后能/否往右,从左往右下车后能/否往左,全否称为0,全是称为1,从右往左称为左,从左往右称为右 可以发现不存在先左后右的情况,因为一个左意味着x>L- 阅读全文
摘要:
题目大意 题解 首先只有能被拓扑的点才能被选,分成森林之后考虑计算 如果一个树的根仍连向未选点,那么这个根要选的话只能最后选,dp求 否则一个树没有固定的最后选的,直接算会算重,考虑对于一种方案将其唯一计算 把树提出来,把点按照拓扑序编号,每次硬点前i-1个必选,第i个必不选,这样就可以唯一算到,对 阅读全文
摘要:
题目大意 题解 哈希,表示成Σai*p^i(i可以为负),设Si表示后缀哈希值,sumi表示前缀>+1<-1的和 那么区间[l,r]满足当且仅当$S_l-S_r*p^{sum_r-sum_}=S_1$,移项后乘上p^sum(l-1),枚举lmap统计 要写双哈希 code #include <bit 阅读全文
摘要:
题目大意 题解 二分+hash判断 长链剖分求k级祖先 性质:一个点的k级祖先所在链长度>=k 证明:如果该点和祖先在同一条链上则得证,否则存在更长的链 在每条链顶维护往上/下len个,找的时候先跳到2i级祖先(2i<k且i最大),然后O(1)找即可 因为2^i级祖先所在链长度>=2^i,且k-2^ 阅读全文
摘要:
题目大意 题解 一道找规律的题目手玩了一天晚上直接打表切了我tmsb 一个显然的思路:把an用ab的某种运算表示出来,然后找规律 那么这个运算显然要满足结合律,题目给的运算并不符合 直接用置换群的概念,这样运算满足结合律,原来的$f(p,q)=p^{-1}q$ 由于置换的乘法要考虑左右,因此$c=a 阅读全文
摘要:
题目大意 题解 缩点双前缀和判断,注意连通性与重边 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a++) #define fd(a,b,c) for (a=b; a>=c; a--) #define min(a,b) 阅读全文
摘要:
题目大意 题解 想了一天结果连边都没有挨到 结论:如果a1>=an,则车一定会先去1,之后从1去往n 证明:n=2时满足,n>2时如果车在n-1~n处,因为a1>=an所以1想的话可以直接消掉n的影响,同时2~n-1也会跟着这么做(其实根据题目的描述来说每个人的选择与本轮其他人的选择无关,但是也可以 阅读全文
摘要:
题目大意 交互题 有一个[1,n]中的数x,要求在10000次操作内找出,有一个集合{1...n}和三种操作 A:询问集合内a的倍数个数 B:询问集合内a(a>=2)的倍数个数,同时删掉除x外所有a的倍数 C:回答 题解 在被Good Bye2019打出心里阴影后九个月没打了尝试上分 由于10000 阅读全文
摘要:
题目大意 题解 裸题 建SAM,在SAM上面数位dp维护位置和当前长度即可 注意要先枚举新加的数,然后统一跳fail直到可以往下接,否则时间不能保证 时间复杂度O(10*nd^2) code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a 阅读全文
摘要:
题目大意 题解 从各种意义上来说都很离谱的题 看到k<=1e3,一眼k^2logn,结果是(n+m)k,1.5s两亿 并且还是上升子序列,所以用nlogn的方法在不确定时维护指针扫一遍转移即可 转移的时候记下来上一个非-1的位置,最后贪心填 关于如果是单调不减的思考(口胡): 在维护的时候维护填入的 阅读全文
摘要:
题目描述 有n堆石子,第i堆有xi个。 Alice和Bob轮流取石子(先后手未定),Alice每次从一堆中取走a个,Bob每次从一堆中取走b个,无法操作者输。 不难发现只会有四种情况:Alice必胜;Bob必胜;先手必胜;后手必胜。 你需要选定若干堆石子(共有2^n种方案),Alice和Bob只能在 阅读全文
摘要:
题目大意 题解 类似二维,二分后变成一个六顶点八面体,维护四对面x+y+z,x+y-z,x-y+z,x-y-z的限制 要求对这个不等式组求解,想过一些做法感觉不可行 考虑换元,设A=-x+y=z,B=x-y+z,C=x+y-z,则x+y+z=A+B+C,变成关于A+B+C,A,B,C的限制,这个可以 阅读全文