关闭
当前搜索:

[杜教筛 反演] 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...
阅读(6) 评论(0)

[主席树 链剖] 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...
阅读(27) 评论(0)

[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...
阅读(13) 评论(0)

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

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

[齐次线性递推式 多项式取模] 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}...
阅读(28) 评论(0)

[后缀树 & 虚树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(){...
阅读(21) 评论(0)

[Contest] Codechef January Challenge 2018

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

[补集转换 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 #includ...
阅读(58) 评论(0)

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

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

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

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

[容斥 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}...
阅读(47) 评论(0)

[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 #include #inclu...
阅读(48) 评论(0)

[容斥 & 状压DP & FFT] Tco 2016 Final. HamiltonianPaths

相当于是问有多少种排列,使得相邻的点之间没有边 考虑容斥 一张图中选了 dd 条边,那么会形成 n−dn-d 条链,设所有图中的链总共有 xx 条,那么答案乘上 x!x! 只要DP出形成 aa 条链的方案数,然后NTT一下就可以了// BEGIN CUT HERE // END CUT HERE #include #include #include...
阅读(41) 评论(0)

[矩阵树定理 容斥 meet in middle] Topcoder SRM 551 DIV1 Hard. SweetFruits

枚举最后的树中有多少个是truly sweet的 答案就是 ∑i=0nfi×gi \sum_{i=0}^n f_i\times g_i 其中,fif_i 表示选出 ii 个水果使其价值和不超过Limit的方案数 gig_i 是有 ii 个truly sweet的生成树个数fif_i 可以meet in middle 设图中前 ii 个点是truly sweet, i+1i+1 到 kk 是s...
阅读(48) 评论(0)

[矩乘优化DP] Topcoder SRM550 DIV1 Hard. ConversionMachine

每个位置显然是先变成正确的,然后进去若干循环这样就可以算出最多进行多少轮变换,令 fi,j,kf_{i,j,k} 表示进行了 ii 轮变换,有 jj 个位置差一次变换, kk 个位置差两次变换直接DP肯定不行,可以用矩乘优化// BEGIN CUT HERE // END CUT HERE #include #include #include ...
阅读(42) 评论(0)

[暴搜 & 网络流判定] Topcoder SRM549 DIV1 Hard. CosmicBlocks

n很小可以暴搜所有情况合法性用上下界网络流判断// BEGIN CUT HERE // END CUT HERE #include #include #include #include #include #include #include #include <a...
阅读(32) 评论(0)

[分数规划 & FLOYD判正环] BZOJ4898[Apio2017] 商旅

答案是分数规划的形式二分答案 就是求∑wi∑ti≥x{\sum w_i\over \sum t_i}\ge x也就是∑wi−x⋅ti≥x\sum w_i-x\cdot t_i\ge x用floyd判是否有正环就可以了#include #include #include #include using namespace...
阅读(69) 评论(0)

[博弈 & 字典树合并] BZOJ4730. Alice和Bob又在玩游戏

每棵树单独考虑对于每个子树,通过枚举删去的点,可以算出剩下的所有树的SG值的异或值的集合,集合的MEX就是这个子树的SG值用字典树维护所有情况,合并的时候打个标记,然后字典树合并就行了#include #include #include #include using namespace std;const int N=...
阅读(65) 评论(0)

[长链剖分 & 线段树] BZOJ1758[Wc2010] 重建计划

学一发长链剖分 原来以前在ATCODER上做的一题就是这个套路…#include #include #include using namespace std;const int N=100010;int n,U,D,cnt,dpt[N],d[N],G[N],son[N],fa[N]; struct edge{ int t,nx;...
阅读(40) 评论(0)

[Contest] 算法马拉松. 32

哇做不来数论题…A. 特殊表示法这题搞了好久…把两个特殊表示法加起来,只要能处理2就好了 有两种情况 ...21...→...1.1.....21...\rightarrow ...1.1.. ...2...→.1..1.....2...\rightarrow .1..1..#include #include #include #...
阅读(64) 评论(1)
354条 共18页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:73556次
    • 积分:4207
    • 等级:
    • 排名:第8483名
    • 原创:354篇
    • 转载:0篇
    • 译文:0篇
    • 评论:17条
    文章分类