02 2016 档案

摘要:偶数个相邻, 以n*m个点为变量, 建立异或方程组然后高斯消元...O((n*m)^3)复杂度看起来好像有点大...但是压一下位的话就是O((n*m)^3 / 64), 常数小, 实际也跑得很快. --------------------------------------------------- 阅读全文
posted @ 2016-02-23 21:41 JSZX11556 阅读(426) 评论(0) 推荐(0) 编辑
摘要:BZOJ挂了....明天就要出发去GDKOI了....不能弃疗. 于是在cf水了几道题, 写写详(jian)细(dan)题解, 攒攒RP, 希望GDKOI能好好发挥....... 620E. New Year Tree 题目大意: N个结点的树, 结点1为根, 要支持2种操作(M个操作): 1.将以 阅读全文
posted @ 2016-02-18 22:51 JSZX11556 阅读(553) 评论(0) 推荐(0) 编辑
摘要:dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率.考虑第i+1张牌:发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j)没发动的概率 : dp(i, j) * (1 - p[i+1])^j分别转移到状态:dp(i+1, j-1)dp(i+1, j)同时假如i+1 阅读全文
posted @ 2016-02-17 21:38 JSZX11556 阅读(358) 评论(0) 推荐(0) 编辑
摘要:路径(x, y) +z : u处+z, v处+z, lca(u,v)处-z, fa(lca)处-z, 然后dfs一遍, 用线段树合并. O(M log M + M log N). 复杂度看起来不高, 但是跑起来很慢.另一种做法是先树链剖分, 转成序列上的情况, 然后依旧是差分+线段树维护, O(M 阅读全文
posted @ 2016-02-17 12:16 JSZX11556 阅读(456) 评论(0) 推荐(0) 编辑
摘要:dp(x)表示最大面值为x时需要的最少硬币数.枚举x的质因数p, dp(x) = min( dp(x/p) - (p-1) * sigma[a[i]/x] ). --------------------------------------------------------------------- 阅读全文
posted @ 2016-02-16 22:38 JSZX11556 阅读(461) 评论(0) 推荐(0) 编辑
摘要:DAG上有个环, 先按DAG计数(所有节点入度的乘积), 然后再减去按拓扑序dp求出的不合法方案数(形成环的方案数).--------------------------------------------------------------------------------------#incl 阅读全文
posted @ 2016-02-16 18:03 JSZX11556 阅读(472) 评论(0) 推荐(0) 编辑
摘要:全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries + BIT 就行了.时间复杂度O(N log N). 速度垫底了QAQ 你们都会SAM。。。。-- 阅读全文
posted @ 2016-02-13 23:44 JSZX11556 阅读(591) 评论(1) 推荐(0) 编辑
摘要:树的中序遍历是唯一的. 按照数据值处理出中序遍历后, dp(l, r, v)表示[l, r]组成的树, 树的所有节点的权值≥v的最小代价(离散化权值).枚举m为根(p表示访问频率):修改m的权值 : dp(l, r, v) = min( dp(l, m-1, v) + dp(m+1, r, v) + 阅读全文
posted @ 2016-02-13 21:54 JSZX11556 阅读(593) 评论(0) 推荐(0) 编辑
摘要:1棵树的话, 点分治+你喜欢的数据结构(树状数组/线段树/平衡树)就可以秒掉, O(N log^2 N). 假如是环套树, 先去掉环上1条边, 然后O(N log^2 N)处理树(同上); 然后再O(N log N)计算经过删掉边的路径数(在环上扫一遍, 数据结构维护).-------------- 阅读全文
posted @ 2016-02-13 16:23 JSZX11556 阅读(710) 评论(0) 推荐(0) 编辑
摘要:一棵树的话直接树形dp(求出往下走和往上走的期望长度). 假如是环套树, 环上的每棵树自己做一遍树形dp, 然后暴力枚举(环上的点<=20)环上每个点跑经过环上的路径就OK了.-------------------------------------------------------------- 阅读全文
posted @ 2016-02-12 20:52 JSZX11556 阅读(511) 评论(0) 推荐(0) 编辑
摘要:s弄成前缀和(到根), dp(i) = min(dp(j) + (s(i)-s(j))*p(i)+q(i)). 链的情况大家都会做...就是用栈维护个下凸包, 插入时暴力弹栈, 查询时就在凸包上二分/三分. 扩展到树上的话, 就先树链剖分, 然后就变成链上的情况了, 线段树每个结点处理出对应的区间的 阅读全文
posted @ 2016-02-12 14:48 JSZX11556 阅读(620) 评论(0) 推荐(0) 编辑
摘要:树链剖分+可持久化线段树....这个一眼可以看出来, 因为可持久化所以写了标记永久化(否则就是区间修改的线段树的持久化..不会), 结果就写挂了, T得飞起...和管理员拿数据调后才发现= = 做法:码码码码码码码码...码完就AC啦. O(M log N)--------------------- 阅读全文
posted @ 2016-02-08 23:32 JSZX11556 阅读(585) 评论(0) 推荐(0) 编辑
摘要:把x1~xn当成是1~n, 答案是不会变的. 然后直接模拟就行了...... P.S 双倍经验... BZOJ1416 && BZOJ1498 ------------------------------------------------------------------------------ 阅读全文
posted @ 2016-02-07 10:22 JSZX11556 阅读(667) 评论(0) 推荐(0) 编辑
摘要:考虑每批任务对后面任务都有贡献, dp(i) = min( dp(j) + F(i) * (T(i) - T(j) + S) ) (i < j <= N) F, T均为后缀和. 与j有关的量只有t = dp(j) - F(i) * T(j) , 我们要最小化它. dp(j)->y, T(j)->x, 阅读全文
posted @ 2016-02-06 18:18 JSZX11556 阅读(1004) 评论(2) 推荐(0) 编辑
摘要:数据范围太大不能直接高斯消元, tarjan缩点然后按拓扑逆序对每个强连通分量高斯消元就可以了. E(u) = 1 + Σ E(v) / degree(u)对拍时发现网上2个程序的INF判断和我不一样(他们2个的INF判断也不一样).....然而都A掉了....我觉得应该是他们写错了,我的做法应该没 阅读全文
posted @ 2016-02-05 13:16 JSZX11556 阅读(680) 评论(0) 推荐(0) 编辑
摘要:d[i]表示消灭i所需的最小体力值, d[i] = min(S[i], K[i]+Σd[x]), Σd[x]表示普通攻击而产生的其他怪兽. 因为不是DAG, 所以用个队列类似SPFA来更新答案.--------------------------------------#include<cstdio 阅读全文
posted @ 2016-02-03 14:25 JSZX11556 阅读(269) 评论(0) 推荐(0) 编辑
摘要:二分答案, 然后对于答案m, 把地点分成m层, 对于边(u, v), 第x层的u -> 第x+1层的v 连边. 然后第x层的u -> 第x+1层的u连边(+oo), S->第一层的1(PEOPLE_NUMBER), 每一层N -> T(+oo), 假如最大流是等于人数,就是可行答案. ------- 阅读全文
posted @ 2016-02-03 12:40 JSZX11556 阅读(219) 评论(0) 推荐(0) 编辑
摘要:先跑出最短路的图, 然后对于每个点按照序号从小到大访问孩子, 就可以搞出符合题目的树了. 然后就是经典的点分治做法了. 时间复杂度O(M log N + N log N)----------------------------------------------------------------- 阅读全文
posted @ 2016-02-03 10:27 JSZX11556 阅读(467) 评论(0) 推荐(0) 编辑
摘要:这道题各位大神好像都是用后缀自动机做的?.....蒟蒻就秀秀智商写一写后缀数组解法.....求出Height数组后, 我们枚举每一位当做子串的开头.如上图(x, y是height值), Heights数组中相邻的3个后缀, 假如我们枚举s2的第一个字符为开头, 那我们发现, 长度至少为len = m 阅读全文
posted @ 2016-02-02 16:48 JSZX11556 阅读(393) 评论(0) 推荐(0) 编辑
摘要:从左到右加边, 假如+的边e形成环, 那么记下这个环上最早加入的边_e, 当且仅当询问区间的左端点> _e加入的时间, e对答案有贡献(脑补一下). 然后一开始是N个连通块, 假如有x条边有贡献, 答案就是N-x. 用LCT维护加边, 可持久化线段树维护询问. O(NlogN)----------- 阅读全文
posted @ 2016-02-02 12:06 JSZX11556 阅读(344) 评论(0) 推荐(0) 编辑
摘要:首先我们要时光倒流, 倒着做, 变成加边操作维护关键边. 先随意搞出一颗树, 树上每条边都是关键边(因为是树, 去掉就不连通了)....然后加边(u, v)时, 路径(u, v)上的所有边都变成非关键边了, 因为形成了环, 环上任意2点有2条路径。。。下图, 加上蓝色的边, 红色x的边就变成了非关键 阅读全文
posted @ 2016-02-01 22:08 JSZX11556 阅读(308) 评论(0) 推荐(0) 编辑
摘要:dp(i, s)表示考虑了前i个数后, 能取到的数的集合为s时的方案数.对于1~min(L, K)枚举更新, 剩下的直接乘就好了. 复杂度O(T*K*2^N)。。。好像有点大, 但是可以AC。。。。--------------------------------------------------- 阅读全文
posted @ 2016-02-01 17:46 JSZX11556 阅读(304) 评论(0) 推荐(0) 编辑
摘要:树背包, 左儿子右兄弟来表示树, dp(x, y, z)表示结点x, x的子树及x的部分兄弟共建y个伐木场, 离x最近的伐木场是z时的最小代价. 时间复杂度O(N^2*K^2)-------------------------------------------------------------- 阅读全文
posted @ 2016-02-01 14:53 JSZX11556 阅读(652) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示