自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CE玩家

人生最大的快乐,就是做别人说你做不到的事。

  • 博客(422)
  • 收藏
  • 关注

原创 [卷积定理] LOJ#548. 「LibreOJ β Round #7」某少女附中的体育课

设变换矩阵为 TTT由卷积定理可以知道对于 TTT 的每一行的任意 i,ji,ji,j 满足 xi×xj=xi opt xjxi×xj=xi opt xjx_i\times x_j = x_i ~\text{opt}~x_j因为 AAA 满足循环律所以存在 c>1c>1c>1 满足 xci=xixic=xix_i^c=x_i 也就...

2018-02-26 10:40:25 658

原创 [主席树优化建图] LOJ#546. 「LibreOJ β Round #7」网格图

最简单的思路是离散化后 O(k2)O(k2)O(k^2) 搞然而对于横着的朝向,极长的横着相连的格子的答案是相同的,竖着的同理那么把极长的相连的格子也缩起来,用主席树优化建图,就可以 O(klogk)O(klog⁡k)O(k\log k) 最短路了#include <cstdio>#include <iostream>#include <algorit...

2018-02-25 21:17:16 573

原创 [费用流] LOJ#545. 「LibreOJ β Round #7」小埋与游乐场

有两种操作是有效的lowbit(ai)>lowbit(bj)lowbit(ai)>lowbit(bj)lowbit(a_i)>lowbit(b_j) 或者 ai=bjai=bja_i=b_j当 lowbit(ai)>lowbit(bj)lowbit(ai)>lowbit(bj)lowbit(a_i)>lowbit(b_j) 的 aiaia_i 和 bjbjb_j 操...

2018-02-25 15:44:30 477

原创 [分段打表 组合] LibreOJ Round #8 C .MIN&MAX I

由样例一可以知道三个数的位置关系这四种情况其实是等价的,所以就就考虑其中的一种就好了对于每一个三元环,我们求出它在所有排列中出现多少次,总和除以 n!n!n! 就是答案设我们考虑的环为 a3a3a_3 a1a1a_1 a2a2a_2 (a1<a2<a3a1<a2<a3a_1a3a3a_3 与 a1a1a_1 之间, a1a1a_1 与 a2a2a_2 之间可能插...

2018-02-24 15:04:02 563

原创 [几何 平面图欧拉定理] Codeforces 933C. A Colourful Prospect

平面图欧拉定理的应用#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <vector>using namespace std;typedef double ld;const ld eps=1e-7;...

2018-02-18 19:06:36 930

原创 [组合 斯特林数] Codeforces 932E. Team Work

ans=∑i=1n(ni)ikans=∑i=1n(ni)ikans=\sum_{i=1}^n{n\choose i}i^k用斯特林数展开 ikiki^kans=∑i=1n(ni)∑j=1kS(k,j)A(i,j)ans=∑i=1n(ni)∑j=1kS(k,j)A(i,j)ans=\sum_{i=1}^n{n\choose i}\sum_{j=1}^kS(k,j)A(i,j)=∑j=...

2018-02-16 15:37:30 541

原创 [LCT] WC2018. 即时战略

之前询问得到的树用LCT维护,然后每次询问从根开始询问询问次数和复杂度都是 O(nlogn)O(nlog⁡n)O(n\log n) 的UPD:被HACK了#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cs...

2018-02-11 13:31:10 655

原创 [FMT] WC2018.州区划分

令 fi,Sfi,Sf_{i,S} 表示选择了 iii 个城市进行划分,选择的城市集合为 SSS 的答案那么 fi,S=∑fj,s×gS⊕sfi,S=∑fj,s×gS⊕sf_{i,S}=\sum f_{j,s}\times g_{S\oplus s}用子集和变换#include <cstdio>#include <iostream>#include &l...

2018-02-10 14:47:28 845

原创 [树分治 虚树] LOJ#2339. 「WC2018」通道

考场打了树分治套链分治拿了64分…大概就是把第三棵树树分治,(用左儿子右兄弟的方法重构),然后在第二棵树建立虚树,然后树形DP,每个点记录子树的点在第一棵树中距离最大的两个点,然后合并#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#...

2018-02-10 10:16:27 692

原创 [矩阵树定理 DFT] LOJ#6271. 「长乐集训 2017 Day10」生成树求和 加强版

因为是三进制不进位加法,所以三进制下每一位是独立的那么只要求出 fi" role="presentation">fifif_i,生成树边权和在模三意义下为 i" role="presentation">iii 的方案数可以用矩阵树定理,矩阵的每个元素是一个三元组,表示方案数这样转移的常数是9,然而数据好像只有小于等于40的…转移实际上是一个循环卷积的形式,考虑DFT那么就要找到

2018-02-06 20:48:45 734

原创 [几何 扫描线] LOJ#6260. 「CodePlus 2017 12 月赛」寄蒜几盒

直线很少,把交点算出来扫描线多边形的数量是 O(n2)" role="presentation">O(n2)O(n2)O(n^2) 的,因为是平面图,所以顶点的总数也是 O(n2)" role="presentation">O(n2)O(n2)O(n^2) 的,搞一搞就好了#include #include #include #include #include #define e

2018-02-06 13:33:23 467

原创 [分治FFT] LOJ#6183. 看无可看

推一推 fn" role="presentation">fnfnf_n 的通项fn=a×3n−b×(−1)n" role="presentation">fn=a×3n−b×(−1)nfn=a×3n−b×(−1)nf_n=a\times 3^n-b\times (-1)^na" role="presentation">aaa 和 b"

2018-02-03 16:44:33 746

原创 [倍增矩乘 FFT] LOJ#6275. 棋盘

考虑dpfi,s,j" role="presentation">fi,s,jfi,s,jf_{i,s,j} 表示前 i" role="presentation">iii 列,最后一列的状态是 s" role="presentation">sss ,有 j" role="presentation">jjj 个联通块的方案数如果令多项式 gi,s(x)=∑i=0nfi,s,ixi

2018-02-03 16:40:16 524

原创 [dfs序 线段树] LOJ#6276. 果树

考虑相同颜色的两种节点,这两个节点会把树分成三部分(左、中、右),左部分的点不能和右部分的点组成一种方案枚举每一个点,只要求出有多少个点能和它组成合法点对就行了枚举每一对颜色相同的节点,在dfs序上搞一搞就行了#include #include #include #include using namespace std;typedef pairint,int> par;

2018-02-03 16:34:53 484

原创 [莫队 分块] LOJ#6273. 郁金香

区间询问,用莫队处理记录每种颜色出现的次数,然后令 si" role="presentation">sisis_i 表示当前区间有多少种颜色出现次数在 (i−1)∗S+1∼i∗S" role="presentation">(i−1)∗S+1∼i∗S(i−1)∗S+1∼i∗S(i-1)*S+1\sim i*S 之间,这样就可以 O(nS+S

2018-02-03 16:28:15 300

原创 [反演] Project Euler 608. Divisor Sums

D(m,n)=∑d|m∑k=1nσ0(kd)" role="presentation">D(m,n)=∑d|m∑k=1nσ0(kd)D(m,n)=∑d|m∑k=1nσ0(kd)D(m,n)=\displaystyle\sum_{d|m}\sum_{k=1}^n\sigma_{\small 0}(kd)求 D(200!,1012)" role="pres

2018-01-29 07:47:32 424

原创 [BITSET 分块] BZOJ5087. polycomp

陈老师神题×2因为多项式的系数是0/1,那么可以用bitset压位优化但是 O(n332)" role="presentation">O(n332)O(n332)O({n^3\over 32}) 不够优考虑每十位分一个块,令 gS=∑i=09Sibi" role="presentation">gS=∑9i=0SibigS=∑i=09Sibig_{S}=\sum_{i=0}

2018-01-28 19:13:09 571

原创 [后缀自动机] BZOJ5084. hashit

陈老师神题 考虑怎么删除,每次插入最多增加两个节点,那么删除只要删除两个节点就好了加入字符时会改变两个值,一个是nxt一个是fail当我们删除节点 u" role="presentation">uuu 时,如果一个点 v" role="presentation">vvv 的fail是 u" role="presentation">uuu,那么要把 failv" role="present

2018-01-28 19:04:58 591

原创 [DP] HDU5492. Find a path

推式子 ans=(n+m−1)∑i=1n+m−1Ai 2−(∑i=1n+m−1Ai)2" role="presentation">ans=(n+m−1)∑i=1n+m−1Ai 2−(∑i=1n+m−1Ai)2ans=(n+m−1)∑i=1n+m−1Ai 2−(∑i=1n+m−1Ai)2ans=(n+m-

2018-01-27 20:32:32 352

原创 [DP] LOJ#6172. Samjia 和大树

考虑暴力的dp fx,i" role="presentation">fx,ifx,if_{x,i} 表示 x" role="presentation">xxx 点权值为 i" role="presentation">iii 的方案数,这个dp数组是有对称性的。 再观察一下可以发现,大于 n∗k" role="presentation">n∗kn∗kn*k 且小于 m&#x2212

2018-01-26 19:59:49 419

原创 [Hash 后缀自动机] LOJ#6173. Samjia 和矩阵

枚举子矩阵的宽度不同宽度的子矩阵一定本质不同,相同宽度的子矩阵有 n2" role="presentation">n2n2n^2 个,把每个宽度为 k" role="presentation">kkk 的子矩阵每一行hash一下,就变成了一个字符串,求本质不同的个矩阵用广义后缀自动机就行了#include #include #include #include using name

2018-01-26 16:56:11 363

原创 [dfs序 主席树] HackerRank University CodeSprint 3. Simple Tree Counting

Hillan大佬神奇的idea求出树的dfs序,只要能处理加边和删边操作就行了令加入的边为 (x,y)" role="presentation">(x,y)(x,y)(x,y),不妨设 x" role="presentation">xxx 是 y" role="presentation">yyy 的父亲,令 z" role="presentation">zzz 为 x" role="pre

2018-01-26 16:08:53 361

原创 [回文自动机 Manacher] BZOJ4166: 月宫的符卡序列

hash被卡… 本来以为是回文自动机裸题 发现fail树上一条链的节点表示的回文子串的中点是不一样的… 不过回文树上的链是一样的那么用建出回文树(我用回文自动机建的,manacher建不知道为什么WA了),然后找到以每个点为中点的最大回文子串,这个用manacher找在对应节点加上贡献就行了#include #include #include #include usin

2018-01-25 20:32:17 583

原创 [分治线段树 & 线性基] BZOJ4184: shallot

明显的分支线段树加线性基 我刚开始每个节点都开了个线性基,内存是满的 O(nlog⁡m)" role="presentation">O(nlogm)O(nlog⁡m)O(n\log m),被卡了#include #include #include #include #include #include using namespace std;const in

2018-01-25 08:18:36 441

原创 [倍增] BZOJ5015: [Snoi2017]礼物

瞎JB推式子ans=nk+∑i=1n−12n−1−iik=nk+2n−1∑i=1n−1(12)iikans=n^k+\sum_{i=1}^{n-1}2^{n-1-i}i^k=n^k+2^{n-1}\sum_{i=1}^{n-1}{\big({1\over 2}\big)}^ii^k令R=12R={1\over 2}ans=nk+2n−1∑i=1n−1Riikans=n^k+2^

2018-01-24 15:43:23 433

原创 [莫队] BZOJ5016: [Snoi2017]一个简单的询问

ans=∑∞x=0(px,r1−px,l1−1)(px,r2−px,l2−1)ans=\sum_{x=0}^\infty (p_{x,r1}-p_{x,l1-1})(p_{x,r2}-p_{x,l2-1})展开得到 ans=∑x=0∞px,r1px,r2−∑x=0∞px,r1px,l1−1−∑x=0∞px,r2px,l1−1+∑x=0∞px,l1−1px,l2−1ans=\sum_{x=0}

2018-01-24 15:01:40 471

原创 [后缀自动机 阈值] LOJ#6031. 「雅礼集训 2017 Day1」字符串

对 kk 阈值 如果 k≤Sk\le S 枚举询问串的每个子串,在后缀自动机上找到对应的节点就可以了O(qkk2logn)O({q\over k}k^2\log n)如果 k>Sk>S 枚举询问串的前缀,找到对应节点,每个和这个前缀相关的询问是这个前缀的后缀,在fail树上倍增O(qk(k+mlogn))O({q\over k}(k+m\log n))这个log我卡不掉,只能

2018-01-24 14:05:34 402

原创 [矩阵树定理] LOJ#6259. 「CodePlus 2017 12 月赛」白金元首与独舞

如果已经有箭头的格子之间形成环,那么显然无解 新增一个关键点代表出界 那么每个关键点加上上下左右箭头后会走到其他关键点。 就相当于在k个关键点之间加上有向边,那么每一种以“出界”的关键点为根的生成树形图代表一种方案,用矩阵树定理就行了#include #include #include using namespace std;const int N=310,P=1e9+7

2018-01-23 18:12:41 320

原创 [杜教筛 反演] LOJ#6229. 这是一道简单的数学题

推一推式子可以得到 ans=∑d=1n∑i=1⌊nd⌋∑j=1iij[gcd(i,j)=1]ans=\sum_{d=1}^n\sum_{i=1}^{\lfloor{n\over d}\rfloor}\sum_{j=1}^i ij[\gcd(i,j)=1]有一个经典的等式是 ∑i=1ni[gcd(i,n)=1]=[n=1]+nφ(n)2\sum_{i=1}^ni[\gcd(i,n)=1]={[n

2018-01-18 20:01:43 768

原创 [主席树 链剖] LOJ#6073. 「2017 山东一轮集训 Day5」距离

刚开始想了一个很naive的分块加虚树的做法,不管时空复杂度还是代码复杂度都巨大可以把问题转发成求 ∑i∈path(u,root)dis(pi,k)\sum_{i\in path(u,root)}dis(p_i,k)再推一下式子就得到 ans=∑i∈path(u,root)dis(pi)+depthu×dis(k)−2∑i∈path(u,root)dis(lca(i,k))ans=\sum

2018-01-18 09:58:56 510

原创 [DP 分块子集枚举] UOJ#300.【CTSC2017】吉夫特

DP转移很好写暴力是 O(318)O(3^{18}) 的把每个二进制数分成前9位和后9位,分块统计复杂度就是 O(69)O(6^9) 了#include #include #include using namespace std;const int N=333333,P=1e9+7;int n,ans,a[N],f[N];inline int Query(int x

2018-01-17 21:25:45 432

原创 [动态维护图连通性] LOJ#122. 【强制在线】动态图连通性

学一发黑科技给边设一个权值,对每一种权值 iii 维护权值大于等于 iii 的边构成的最大生成树 TiTiT_i加边 一个边刚被加入时的权值设为0,如果它连接两个联通块,就把它设为树边,否则设为非树边删边假设要删除边 (x,y)(x,y)(x,y),设它的权值为 www如果它是一条非树边,直接删去,否则要找一条边替代它。显然替代它的边的边权小于等于 www设删掉这条边...

2018-01-17 17:26:19 11077 1

原创 [齐次线性递推式 多项式取模] BZOJ4161. Shlw loves matrixI

模板题 设转移矩阵为 MM 它的特征多项式为 f(x)=|xI−M|f(x)=|xI-M| 按第一行拉普拉斯展开,得到 f(x)=xk−∑ki=1aixk−if(x)=x^k-\sum_{i=1}^{k}a_ix^{k-i} 由Cayley-hamilton定理,可以知道 f(M)=0f(M)=0,所以 Mk=∑ki=1aiMk−iM^k=\sum_{i=1}^{k}a_iM^{k-i}

2018-01-16 15:26:28 1040

原创 [后缀树 & 虚树DP] BZOJ3879. SvT

两个后缀的LCP是后缀树上对应节点的LCA多组询问就用虚树卡时限过+1#include #include #include #include using namespace std;typedef long long ll;const int N=1000010;const ll P=23333333333333333LL;inline char nc(){

2018-01-16 10:15:50 467

原创 [Contest] Codechef January Challenge 2018

发烧在家躺了一个星期呢…Rectangle直接判一下是不是有两对相等的Maximum Score倒过来贪心,每次选最大的能选的K-Concatenation分三种情况讨论就完了,在一个串呢,在两个串呢,跨越n-2个串Partition the numbers先随便分一下,然后枚举小的集合的一个数,把它放到大的集合里,然后判断能不能分匀……感觉是能叉掉

2018-01-16 09:14:18 730

原创 [补集转换 DP] Topcoder SRM 509 DIV1 Hard. NumberLabyrinthDiv1

令 fi,j,kf_{i,j,k} 表示第 ii 个点通过加了 kk 个点到 jj 的方案数 gi,j,kg_{i,j,k} 表示第 ii 个点通过加了 kk 个点到 jj 且不经过其他点的方案数gi,j,kg_{i,j,k} 可以通过补集转换计算出 然后DP就很简单了// BEGIN CUT HERE // END CUT HERE #include <vector> #includ

2018-01-04 16:02:40 477

原创 [容斥DP & 高精度] BZOJ2024 [SHOI2009] 舞会

男女生按升高排序 令 fi,jf_{i,j} 表示前 ii 个女生中有 jj 个比男生高(其他 i−ji-j 个不确定)的方案数DP出来了容斥一下就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N=210;const int

2018-01-04 14:19:07 414

原创 [状压DP || 容斥 矩阵树定理] Codeforces 53E. Dead Ends

容斥练习题这题状压DP的做法跟今年NOIP那题状压一样简单——vectorxj也可以容斥 枚举叶子的集合 SS,算出非叶子的点的导出子图的生成树个数,再乘上每个叶子和这些点的边的数量 这样可以算出 fif_i,至少有 ii 个叶子的方案数然后就跟一般容斥一样 gi=fi−∑j=i+1n(ji)gjg_i=f_i-\sum_{j=i+1}^n{j\choose i}g_j#include <

2018-01-04 11:52:50 537

原创 [容斥 DP] Topcoder SRM 498 DIV1 Hard. FoxJumping

容斥 令 fi,jf_{i,j} 表示走了 ii 步不合法的,x和y都走了 jj 的方案数 li,jl_{i,j},ri,jr_{i,j} 分别表示在x,y方向上随便走了 ii 步,走了 jj 的方案数那么答案是 ∑d=0R(−1)d(Rd)∑i=0nfd,i×lR−d,n−i×rR−d,m−i\sum_{d=0}^R(-1)^d{R\choose d}\sum_{i=0}^nf_{d,i}

2018-01-04 10:42:05 499

原创 [DP] Topcoder SRM 552 DIV1 Hard. HolyNumbers

fi,jf_{i,j} 表示前 ii 个质数,能组成小于等于 jj 的方案数 转移简单,但是记忆化会爆内存 倒过来考虑, fi,jf_{i,j} 表示用了后 ii 个质数的方案数,那么当 p2i>jp_i^2>j 时就可以用二分查找解决// BEGIN CUT HERE // END CUT HERE #include <vector> #include <list> #inclu

2018-01-04 09:07:02 488

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除