随笔分类 -  all—好题

上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要:点分治,设当前处理的块的重心为rt,预处理出每个子树中f[v][0/1]表示组合出、没组合出一对值v的链数(从当前儿子出发的链),能组合出一对v值就是可以有一个休息点 然后对于rt,经过rt且合法的路径是两边拼起来至少有一个休息点的路径,每次假如新儿子都和之前的儿子组合一遍即可,注意f[0][0]实 阅读全文
posted @ 2018-12-11 16:32 lokiii 阅读(157) 评论(0) 推荐(0)
摘要:不太清楚是不是动态dp……? 这个维护其实和最大连续子段差不多,维护l[x][y],r[x][y],m[x][y]分别表示包含左儿子的01个数为(x,y)的区间个数,包含右儿子的01个数为(x,y)的区间个数,和01个数为(x,y)的所有区间个数 x表示1的个数情况,0表示0个,1表示1个,2表示 阅读全文
posted @ 2018-12-10 07:57 lokiii 阅读(346) 评论(1) 推荐(1)
摘要:参考:https://www.cnblogs.com/CQzhangyu/p/8632904.html 要开longlong的 首先看dp,设f[u]为必选u点的子树内最大联通块,p[u]为不一定选u的子树内最大联通块,转移很显然就是f[u]=max(Σf[v],0),p[u]=max(max(p[ 阅读全文
posted @ 2018-12-09 11:55 lokiii 阅读(259) 评论(0) 推荐(0)
摘要:我没有找到能在bzojAC的代码……当然我也WA了……但是我在洛谷过了,那就假装过了吧 minmax线段树一开始写的只能用min更新min,max更新max,实际上是可以互相更新的…… 首先看第二问,注意到因为没有相交,所以可以全都按某种顺序像同一个方向移动来完成游戏,这个顺序通过扫描线找到,用se 阅读全文
posted @ 2018-12-06 17:43 lokiii 阅读(435) 评论(0) 推荐(0)
摘要:首先看出终止状态是全都堆在左边或者右边,然后发现黑的向左白的向右是最优策略(如果不能这样了也就该输了) 然后就不会了 参考 http://www.cnblogs.com/CQzhangyu/p/7707746.html 发现黑白之间的距离一定是不断缩小的,就相当于k堆石子,每次从1~d堆里拿走一些, 阅读全文
posted @ 2018-12-04 15:27 lokiii 阅读(276) 评论(0) 推荐(0)
摘要:这个东西卡常……预处理的时候要先把i%j,i/j都用变量表示,还要把%2变成&1…… 首先每一堆都是不相关子游戏,所以对于每一堆求sg即可 考虑暴力枚举石子数i,分割块数j,分解成子问题求xor和(其实就是根据i/j,i/j+1的个数的奇偶性xor一下即可),然后对sg[i]暴力mex,这样是n^2 阅读全文
posted @ 2018-12-04 11:29 lokiii 阅读(113) 评论(0) 推荐(0)
摘要:先预处理出来sg值,然后先手必败状态就是sg[a[i]]的xor和为0(nim) 如果xor和不为0,那么一定有办法通过一步让xor和为0,具体就是选一个最大的sg[a[i]],把它去成其他sg值的xor和,这样后手的xor和就是0了 当然并不一定要取最大的,只要sg[a[i]] (ans^sg[a 阅读全文
posted @ 2018-12-04 09:20 lokiii 阅读(199) 评论(0) 推荐(0)
摘要:必败状态是倒序排列,也就是正序对为0 然后发现,每次翻转都是有奇数个数对(\\( C_{4x+2}^{2} C_{4x+3}^{2} \\) 都是奇数),所以每次翻转丢回改变正反数对的奇偶性 又因为偶数为必败状态,所以顺序对为奇数则必胜 cpp include include using names 阅读全文
posted @ 2018-12-04 08:24 lokiii 阅读(181) 评论(0) 推荐(0)
摘要:必败状态是n为偶数并且数量相同的石子堆可以两两配对,因为这样后手可以模仿先手操作 其他状态一定可以由先手给后手一步拼出一个必败状态(用最大堆补) cpp include include include using namespace std; const int N=100005; int n,a[ 阅读全文
posted @ 2018-12-03 21:50 lokiii 阅读(187) 评论(0) 推荐(0)
摘要:也就是转换到树形删边游戏,详见 https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html cpp include include include using namespace std; const int N=1005; int T,n, 阅读全文
posted @ 2018-12-03 21:35 lokiii 阅读(128) 评论(0) 推荐(0)
摘要:把连边和不连边看成黑白染色,然后就变成了 https://www.cnblogs.com/lokiii/p/10055629.html 这篇讲得好!https://blog.csdn.net/wzq_qwq/article/details/48035455 cpp include include u 阅读全文
posted @ 2018-12-03 09:48 lokiii 阅读(245) 评论(0) 推荐(0)
摘要:参考 https://wenku.baidu.com/view/fee9e9b9bceb19e8b8f6ba7a.html?from=search 的最后一道例题 首先无向完全图是个若干点的置换,但是实际上要染色边,也就是要求边的置换 首先,通过dfs构造一个点的置换,然后再把每个置换分割加起来就是 阅读全文
posted @ 2018-12-02 21:59 lokiii 阅读(404) 评论(0) 推荐(0)
摘要:其实也不是FWT……我也不知道刷FWT专题问什么会刷出来这个东西 这是min max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s),max(s)分别表示集合s里最早和最晚出现的元素,显然E(amx(全集))就是答案 然后有这样的 阅读全文
posted @ 2018-12-02 11:38 lokiii 阅读(256) 评论(0) 推荐(0)
摘要:满足GL的组合一定包含GL每个质因数最大次幂个最小次幂,并且能做限制这些数不会超过600个 然后质因数最多8个,所以可以状压f[s1][s2]为选s1集合满足最大限制选s2集合满足最小限制 dfs一下预处理出质因数只选一个质因数的初始状态 然后dp,做一个前缀一个后缀,设f[i][j]为前i个质因数 阅读全文
posted @ 2018-12-01 21:54 lokiii 阅读(220) 评论(0) 推荐(0)
摘要:想了好长时间最后发现真是石乐志 第一反应就是两边之和大于第三边,但是这个东西必须要满足三次…… 任意的两边之和合通过生成函数套路+FFT求出来(记得去掉重复选取的),然后这任意两边之和大于任意第三边可以用一个前缀和求得(同样记得去重,前缀和里面一定包含前两条边),这样我们就得到了任意两边之和大于任意 阅读全文
posted @ 2018-11-29 16:21 lokiii 阅读(256) 评论(0) 推荐(0)
摘要:考虑正难则反,我们计算所有对称子序列个数,再减去连续的 这里减去连续的很简单,manacher即可 然后考虑总的,注意到关于一个中心对称的两点下标和相同(这样也能包含以空位为对称中心的方案),所以设f[i]为下标和为i的对称中心一共有多少对相同字符,这样总答案就是\\( \sum_{i=0}^{2 阅读全文
posted @ 2018-11-29 10:43 lokiii 阅读(130) 评论(0) 推荐(0)
摘要:还是没有理解透原根……题目提示其实挺明显的,M是质数,然后1 include include using namespace std; const int N=20005,mod=1004535809,g=3; int n,m,x,k,s[N],d=2,id[N],lm,bt,re[N]; long 阅读全文
posted @ 2018-11-28 21:50 lokiii 阅读(201) 评论(0) 推荐(0)
摘要:真实脑洞题 因为通配符所以导致t串实际有指数级别个,任何字符串相关算法都没有用 考虑一个新的匹配方法:设a串(模板串)长为n,从m串的i位置开始匹配:\\( \sum_{i=0}^{n 1}(a[j] b[i+j])^2a[j] \\) 这个东西只有在从i开始的长为n的a串子串与b串完全匹配的时候才 阅读全文
posted @ 2018-11-28 15:17 lokiii 阅读(188) 评论(0) 推荐(0)
摘要:瞎搞居然1A,真是吃鲸 n的范围只有聪明人能看见……建议读题3遍 首先看计数就想到生成函数,列出多项式A(x),然后分别考虑123 对于选一个的直接计数即可; 对于选两个的,\\( A(x)^2 \\),然后注意这里两个选一样的是不合法的,各出现了一次,所以减掉,然后这里是有顺序的,所以最后再除以2 阅读全文
posted @ 2018-11-27 21:57 lokiii 阅读(161) 评论(0) 推荐(0)
摘要:首先根据生成函数的套路,这个可以写成: $$ \prod_{i=1}^{n}(1+x^1+x^2+...+x^{c[i]}) $$ 然后化简 $$ =\prod_{i=1}^{n}\frac{1 x^{c[i]+1}}{1 x} $$ $$ =\prod_{i=1}^{n}\frac{1}{1 x} 阅读全文
posted @ 2018-11-25 21:37 lokiii 阅读(333) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页