上一页 1 2 3 4 5 6 7 8 9 ··· 29 下一页
摘要: 参考: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 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 是动态dp的板子 大致思想就是用g[u]来表示不包含重链转移的dp值,然后用线段树维护重链,这样线段树的根就相当于这条重链的top的真实dp值 每次修改的时候,修改x点会影响到x到根的真实dp值,但是只会影响到每条重链的低端点的dp值,相当于在log个线段树上单点修改 cpp include inc 阅读全文
posted @ 2018-12-08 19:00 lokiii 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 一直WA……找了半天错的发现居然是解密那里的mask其实是不能动的……传进去的会变,但是真实的那个不会变…… 然后就是后缀自动机,用LCT维护parent树了……注意不能makeroot,因为自动机的根是不会变的(同理也不能翻转区间),其实就是低配LCT(?) cpp include include 阅读全文
posted @ 2018-12-07 10:39 lokiii 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 我没有找到能在bzojAC的代码……当然我也WA了……但是我在洛谷过了,那就假装过了吧 minmax线段树一开始写的只能用min更新min,max更新max,实际上是可以互相更新的…… 首先看第二问,注意到因为没有相交,所以可以全都按某种顺序像同一个方向移动来完成游戏,这个顺序通过扫描线找到,用se 阅读全文
posted @ 2018-12-06 17:43 lokiii 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 我想写FHQtreap的!是set自己跑进代码的!~~因为太好写了~~ 是有点慢……洛谷上不吸氧会T一个点 就是,用一个set p维护所有点值,ans维护MIN_SORT_GAP的答案,每次insert一个点的时候都查一下它在p里的前驱后继,更新一下ans即可;用一个multiset c维护差分后的 阅读全文
posted @ 2018-12-05 19:16 lokiii 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 就是非旋treap的板子 cpp include include include using namespace std; const int N=500005,mod=73939133,bs=997687623; int q,tot,rt,st=123; struct qwe { int c[2] 阅读全文
posted @ 2018-12-05 10:58 lokiii 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 首先看出终止状态是全都堆在左边或者右边,然后发现黑的向左白的向右是最优策略(如果不能这样了也就该输了) 然后就不会了 参考 http://www.cnblogs.com/CQzhangyu/p/7707746.html 发现黑白之间的距离一定是不断缩小的,就相当于k堆石子,每次从1~d堆里拿走一些, 阅读全文
posted @ 2018-12-04 15:27 lokiii 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 先手必胜状态是黑三角在边上 然后其他情况脑补一下,n为偶数先手必胜,可以理解为从某一边取,先手总有办法让后手取得一边有奇数个 阅读全文
posted @ 2018-12-04 14:49 lokiii 阅读(137) 评论(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 阅读(103) 评论(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 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 必败状态是倒序排列,也就是正序对为0 然后发现,每次翻转都是有奇数个数对(\\( C_{4x+2}^{2} C_{4x+3}^{2} \\) 都是奇数),所以每次翻转丢回改变正反数对的奇偶性 又因为偶数为必败状态,所以顺序对为奇数则必胜 cpp include include using names 阅读全文
posted @ 2018-12-04 08:24 lokiii 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 必败状态是n为偶数并且数量相同的石子堆可以两两配对,因为这样后手可以模仿先手操作 其他状态一定可以由先手给后手一步拼出一个必败状态(用最大堆补) cpp include include include using namespace std; const int N=100005; int n,a[ 阅读全文
posted @ 2018-12-03 21:50 lokiii 阅读(180) 评论(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 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 预处理出SG函数,然后像普通nim一样做即可 cpp include include using namespace std; const int N=10005; int k,s[N],m,n,sg[N],v[N],ti,ans; int read() { int r=0,f=1; char p= 阅读全文
posted @ 2018-12-03 19:57 lokiii 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 如果全是1,那么n是奇数先手必败 否则,xor和为0先手必败 证明见 https://www.cnblogs.com/Wolfycz/p/8430991.html cpp include include using namespace std; const int N=55; int T,n,a[N 阅读全文
posted @ 2018-12-03 17:39 lokiii 阅读(106) 评论(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 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 参考 https://wenku.baidu.com/view/fee9e9b9bceb19e8b8f6ba7a.html?from=search 的最后一道例题 首先无向完全图是个若干点的置换,但是实际上要染色边,也就是要求边的置换 首先,通过dfs构造一个点的置换,然后再把每个置换分割加起来就是 阅读全文
posted @ 2018-12-02 21:59 lokiii 阅读(386) 评论(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 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 满足GL的组合一定包含GL每个质因数最大次幂个最小次幂,并且能做限制这些数不会超过600个 然后质因数最多8个,所以可以状压f[s1][s2]为选s1集合满足最大限制选s2集合满足最小限制 dfs一下预处理出质因数只选一个质因数的初始状态 然后dp,做一个前缀一个后缀,设f[i][j]为前i个质因数 阅读全文
posted @ 2018-12-01 21:54 lokiii 阅读(214) 评论(0) 推荐(0) 编辑
摘要: T了两次之后我突然意识到转成fwt形式之后,直接快速幂每次乘一下最后再逆回来即可,并不需要没此次都正反转化一次…… 就是根据nim的性质,先手必输是所有堆个数异或和为0,也就变成了一个裸的板子 阅读全文
posted @ 2018-11-30 16:11 lokiii 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 想了好长时间最后发现真是石乐志 第一反应就是两边之和大于第三边,但是这个东西必须要满足三次…… 任意的两边之和合通过生成函数套路+FFT求出来(记得去掉重复选取的),然后这任意两边之和大于任意第三边可以用一个前缀和求得(同样记得去重,前缀和里面一定包含前两条边),这样我们就得到了任意两边之和大于任意 阅读全文
posted @ 2018-11-29 16:21 lokiii 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 考虑正难则反,我们计算所有对称子序列个数,再减去连续的 这里减去连续的很简单,manacher即可 然后考虑总的,注意到关于一个中心对称的两点下标和相同(这样也能包含以空位为对称中心的方案),所以设f[i]为下标和为i的对称中心一共有多少对相同字符,这样总答案就是\\( \sum_{i=0}^{2 阅读全文
posted @ 2018-11-29 10:43 lokiii 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 和bzoj 4503 https://www.cnblogs.com/lokiii/p/10032311.html 差不多,就是再乘上一个原串字符 有点卡常,先在点值下算最后一起IDFT cpp include include include include using namespace std; 阅读全文
posted @ 2018-11-29 07:55 lokiii 阅读(115) 评论(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 阅读(193) 评论(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 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 瞎搞居然1A,真是吃鲸 n的范围只有聪明人能看见……建议读题3遍 首先看计数就想到生成函数,列出多项式A(x),然后分别考虑123 对于选一个的直接计数即可; 对于选两个的,\\( A(x)^2 \\),然后注意这里两个选一样的是不合法的,各出现了一次,所以减掉,然后这里是有顺序的,所以最后再除以2 阅读全文
posted @ 2018-11-27 21:57 lokiii 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 扩展中国剩余定理板子 cpp include include using namespace std; const int N=100005; int n; long long m[N],r[N],M,R,x,y,d; void exgcd(long long a,long long b,long 阅读全文
posted @ 2018-11-26 15:36 lokiii 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 扩展中国剩余定理的板子,合并完之后算一下范围内能取几个值即可(记得去掉0) cpp include include include using namespace std; const int N=15; int T,n,m; long long a[N],b[N],A,B,x,y,d; bool 阅读全文
posted @ 2018-11-26 11:49 lokiii 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 用生成函数套路推一推,推完老想NTT……实际上把这个多项式乘法看成dp然后前缀和优化一下即可 cpp include include using namespace std; const int N=1005,mod=1000000; int n,m,c[N],l,r,f[N 100],s[N],s 阅读全文
posted @ 2018-11-26 10:55 lokiii 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 根据套路列出式子:\\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \\),然后暴力展开即可 cpp include include include using namespace std; const int N=205; int n,m,c[N 阅读全文
posted @ 2018-11-26 10:30 lokiii 阅读(158) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 29 下一页