博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

03 2018 档案

摘要:题目链接 一个长度为n的循环节,在k×n(k1)次之后一定会回到原样。 用ai表示每个循环节i的长度,那么所有n个数字的排数为lcm(a1,a2,,ak)(+1),其中ai满足i=1kai=n. 所以题目实 阅读全文
posted @ 2018-03-31 17:30 SovietPower 阅读(157) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 状态只与黑、白两点的颜色有关,于是用 f[x][i][j]表示当前以x为根节点,有i个黑点j个白点,使得x子树满足该条件的最小花费。 最后答案就是 min{f[root][0][j],f[root][i][0/1]}。 把 i1的状态都看做 i=1 阅读全文
posted @ 2018-03-31 16:52 SovietPower 阅读(351) 评论(0) 推荐(2) 编辑
摘要:题目链接 Description 给定一张有向图,从S随机游走,输出到T的期望步数(可能无穷大)。 n104, m106,保证每个强连通分量大小100Solution 一个点到达终点的期望步数 \(E_i=\sum_{(i,j)\i 阅读全文
posted @ 2018-03-31 13:46 SovietPower 阅读(270) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 如题目中的公式,我们只要把做对每个题的概率加起来就可以了(乘个1就是期望)。 做对第i道题的概率 Pi=1max(ai1,ai) 原式是 Pi=min(ai1,ai)ai1×ai,化简后得到上 阅读全文
posted @ 2018-03-31 09:11 SovietPower 阅读(145) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 之前做很早了没写这篇,补上。 记录当前ex[]最大的回文中心id和最远延伸范围mx! 关于串的构造: 应该是 ,而不是 比如 ,答案应是max{ex[i]}1,而第二种很多情况下答案是max{ex[i]}. ~~最优解不改串分奇偶讨论感觉sxbk。。其实也没什么~~ 阅读全文
posted @ 2018-03-30 18:38 SovietPower 阅读(203) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 参考: "浅谈期望的线性性(可加性)" "Codeforces 280C Game on Tree 概率dp 树上随机删子树 求删完次数的期望" (这个的前半部分分析并没有看。。) Description 给你一棵有n个白点的有根树,每次随机选择一个点,将它和它的子树中所有点染 阅读全文
posted @ 2018-03-30 10:25 SovietPower 阅读(271) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 一条边不变其它边减少可以看做一条边增加其它边不变。 假设要加的边lab为(A B,v),那么肯定是要使除这条边外,A B的每条路径上的最小权值都v,这样在连通A,B时(即Kruskal中Union())才一定会选择这条边。 要求路径上最小边的权值v,即要求在路径上有任意一边 阅读全文
posted @ 2018-03-30 09:57 SovietPower 阅读(177) 评论(0) 推荐(0) 编辑
摘要:做(+颓)了4个晚自习后的1h终于写完了(这道模板题) 阅读全文
posted @ 2018-03-29 23:22 SovietPower 阅读(207) 评论(0) 推荐(0) 编辑
摘要:题目链接 参考 远航之曲 Description 给定无向连通图,从1开始随机游走,到点n结束。每走过一条边会获得其编号对应的分数(可重复获得)。安排每条边的编号,使得分的期望值最小。输出最小值。 n500Solution 把走每条边的概率乘上分配的标号 阅读全文
posted @ 2018-03-29 20:29 SovietPower 阅读(217) 评论(0) 推荐(0) 编辑
摘要:这里是摘要 阅读全文
posted @ 2018-03-29 17:40 SovietPower 阅读(181) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 不会搜索了。。 DFS()中两个参数,枚举每两个队伍的比赛结果(分配当前队伍的分数)。 可以发现方案数量与具体哪只球队得了多少分无关,只与当前比赛的队伍数量和得分序列的组成有关。可以记忆化搜索。 DFS()中是从某支队伍和它后面的队伍一一进行比赛 分配得分,分配完当前后将其它队伍的得分 阅读全文
posted @ 2018-03-29 16:09 SovietPower 阅读(207) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" 真的题意不明啊。。 Description 你有k次选择的机会,每次将从n种物品中随机一件给你,你可以选择选或不选。选择它会获得这种物品的价值;选择一件物品前需要先选择某些种物品每种至少一件。 物品价值可能有负。问在最优策略下期望得分。 Solution阅读全文
posted @ 2018-03-28 20:59 SovietPower 阅读(252) 评论(0) 推荐(0) 编辑
摘要:水题ing 阅读全文
posted @ 2018-03-28 17:07 SovietPower 阅读(270) 评论(0) 推荐(0) 编辑
摘要:刷水题ing 阅读全文
posted @ 2018-03-28 16:08 SovietPower 阅读(279) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" ~~以为裸点分治,但数据范围怎么这么小?快打完了发现不对。。~~ n^2做的话其实是个水题。。 枚举每一个点为根,为了不重复计算,我们要求所求的三个点必须分别位于三棵子树上。 考虑当前前3棵子树深度为deep的点分别有a,b,c个,新增的子树深度为deep的点有d个 阅读全文
posted @ 2018-03-28 14:53 SovietPower 阅读(209) 评论(0) 推荐(0) 编辑
摘要:这几天做的最舒服的。。没有什么5K的暴力。。就没有过百行的代码 阅读全文
posted @ 2018-03-28 12:56 SovietPower 阅读(312) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 有n(n include define gc() getchar() const int N=12; int n,num[N]; double p[N],f[N][103],g[N][103]; inline double FP(double x,int k 阅读全文
posted @ 2018-03-28 07:45 SovietPower 阅读(222) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" 题意: 将树划分为k个连通块,要求每个连通块大小相同。输出可能的大小。 结论: 满足条件时颜色的连通块数为k,当且仅当有 n/k 个节点满足它的子树是k的倍数(显然还有 k|n )。 证明就不证了,说下理解(然而也说不清楚。。)。 比如一个点的子树大小为 $ 阅读全文
posted @ 2018-03-27 20:51 SovietPower 阅读(166) 评论(0) 推荐(0) 编辑
摘要:[TOC] 2018.3.27 Test 时间:7:30~11:50 期望得分:(50+)+0+20=70 实际得分:52+5+20=77 总结 T1 看错一点题,暴力也废了很长时间。 T2 期望DP没写过不敢写,然而50分和期望没有关系,贪心什么的就行。没细看。 T3 建图死活建不出来,没想明白费 阅读全文
posted @ 2018-03-27 20:19 SovietPower 阅读(258) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" 区间第k小,我们可以想到主席树。然而这是静态的,怎么支持修改? 静态的主席树是利用前缀和+差分来求解的,那么对于每个位置上的每棵树看做一个点,拿树状数组更新。 还是树状数组的过程,区间加时,每到一个位置在这棵主席树中插入这个数。 查询时,将所有询问要访问到的主席树存 阅读全文
posted @ 2018-03-26 21:13 SovietPower 阅读(338) 评论(0) 推荐(0) 编辑
摘要:"题目链接" f定义和下面的思路一样,转移时枚举填什么字符,去更新f并算出有哪些字符串可以匹配某个状态(见code吧...)。 预处理出有哪些字符串在第i位可以转移到某个字符c,dp时&一下状态即可。 以下是错误思路(题意理解错,如果是'?'则无论如何都已匹配且要求恰好K个。。): f[i][s]表 阅读全文
posted @ 2018-03-26 20:13 SovietPower 阅读(238) 评论(2) 推荐(0) 编辑
摘要:"题目链接" 题意: 在给定矩形区域内找出最少的数,满足和 =k。输出数的个数。两种数据范围。 0~50 注意到(真没注意到...)P[i,j]=v的个数,val[i][j][v]表示(1,1)~(i,j)值 =v的所有数的和。(不要被什么 =v坑,和二维前缀和一样,只是一个点的初始值为A[i,j] 阅读全文
posted @ 2018-03-26 16:43 SovietPower 阅读(200) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-03-26 10:22 SovietPower 阅读(181) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 对于这一区间的操作,我们可以想到差分+前缀和(感觉也没什么别的了。。)。 同时对于本题我们能想到主席树,而主席树正是利用前一个节点建树的。 所以离散化、按时间排序,把操作拆成单点加和减即可。 另外优先级会有重,权值线段树是去重后的,所以要记录sz "" 并根据这个算出k个。 但是对于同 阅读全文
posted @ 2018-03-26 09:17 SovietPower 阅读(208) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 对每次Merge(),Split()时产生的节点都复制一份(其实和主席树一样)。时间空间复杂度都为O(qlogq)。(应该更大些 因为rand()?内存真的爆炸。。) 对于无修改的操作实际上是可以直接赋值的,因为以后也不会去改当前树,只需要查询;修改时自会复制新节点。 虽然操作3.4. 阅读全文
posted @ 2018-03-26 07:53 SovietPower 阅读(256) 评论(0) 推荐(0) 编辑
摘要:[TOC] 2018.3.25 Test 时间: 7:30~11:30 (最后半小时不做了) 期望得分: 50+100+20=170 实际得分: 40+44+20=104 总结 T1:善用容斥。 T2:要求输出小数当然有它的道理。。 T3:行列分开考虑。看好怎么取模。如要求最大的答案,然后对答案取模 阅读全文
posted @ 2018-03-25 13:29 SovietPower 阅读(207) 评论(2) 推荐(0) 编辑
摘要:"题目链接" cpp //利用先前的根节点建树 想一下不难写。 include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF: SS++) c 阅读全文
posted @ 2018-03-24 20:00 SovietPower 阅读(187) 评论(0) 推荐(0) 编辑
摘要:有一棵n个点的有根树(初始1为根),每个点有不同的颜色。有m次三种操作: 1. x:把x到根节点的路径上所有点染成一种没出现过的颜色。 2. x y:求xy路径上出现颜色的种数。 3. x:在x的子树中选一个点,使其到根节点的路径上出现颜色种数最多。 n,m105阅读全文
posted @ 2018-03-24 17:55 SovietPower 阅读(139) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //17440kb 3760ms //维护区间颜色数、最左、最右颜色即可。 // (L[]==R[])要加括号!woc才发现。 include include include // define gc() getchar() define gc() (SS==TT&&(TT=( 阅读全文
posted @ 2018-03-24 13:15 SovietPower 阅读(141) 评论(0) 推荐(0) 编辑
摘要:给定一张图,求一棵生成树使得其最大边权值-最小边权值最小。 n5×104, m2×105阅读全文
posted @ 2018-03-24 10:53 SovietPower 阅读(243) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意: 森林,动态建边、删边,询问从S开始走到T的期望时间。走位: 每次人会随机地选一条未走过的边走,走到无路可走,再退回。这样直到终点T。走一条边、从一条边退回都花费时间1。 题目特点是走到一棵子树一定会全走完,且是两遍的值。画个图,可以看出这一过程是: 从S开始,随机走 阅读全文
posted @ 2018-03-24 07:44 SovietPower 阅读(199) 评论(0) 推荐(0) 编辑
摘要:题目链接 BZOJ 洛谷 详见这. 求所有点到某个点距离和最短,即求树的重心。考虑如何动态维护。 两棵子树合并后的重心一定在两棵树的重心之间那条链上,所以在合并的时候用启发式合并,每合并一个点检查sz大的那棵子树的重心(记为root)最大子树的sz2是否>n; 若>n,则向$f 阅读全文
posted @ 2018-03-23 21:15 SovietPower 阅读(375) 评论(0) 推荐(0) 编辑
摘要:题目链接 BZOJ 洛谷 Description 树上点有点权(初始为0),边有边权,每次修改一个点的点权,并询问点x使idis(x,i)Ai最小。dis只计算边权。 即带修改查询树上带权重心。 n,q105Solution 依旧点分 阅读全文
posted @ 2018-03-23 15:35 SovietPower 阅读(248) 评论(0) 推荐(1) 编辑
摘要:"题目链接 BZOJ" "洛谷" 对每种颜色维护一个LCT,保存点之间的连接关系。 修改权值A[x]和所有Max[x]都要改; 修改边的颜色先枚举所有颜色,看是否在某种颜色中有边,然后断开。(枚举一遍就行啊 还以为要set什么的存边的颜色) (条件1直接用数组存233) 修改x的颜色必须先把x旋到根 阅读全文
posted @ 2018-03-23 12:34 SovietPower 阅读(132) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 答案就是C(n,m1) C(n m1,m2) C(n m1 m2,m3)...(mod p) 使用扩展Lucas求解。 一个很简单的优化就是把pi,pi^ki次方存下来,因为每次分解p都是很慢的。 注意最后p不为1要把p再存下来!(质数) COGS 洛谷上的大神写得快到飞起啊QAQ 就 阅读全文
posted @ 2018-03-22 22:58 SovietPower 阅读(225) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" "详见这" 很明显题目是要求去掉一条边后两边子树sz[]的乘积。 LCT维护的是链的信息,那么子树呢? 我们用s_i[x]来记录轻边连向x的子树的和(记作虚儿子),那么sum[x]更新时就是sum[lson]+sum[rson]+val[x]+s_i[x]。 现在需 阅读全文
posted @ 2018-03-22 20:57 SovietPower 阅读(144) 评论(0) 推荐(0) 编辑
摘要:[TOC] 2018.3.22 Test 时间: 7:30~11:40 得分: 80+65+20=165 总结 时间分配。。 2个月前写的都忘的差不多了。。 注意: T2合并一棵子树,这棵子树某些点的dep[x]可能会变小,于是fa[x][..]应变为0,但如果在循环里写 `&&(1 特判输出2也要 阅读全文
posted @ 2018-03-22 15:41 SovietPower 阅读(225) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 日常zz被define里没取模坑 cpp //标记下放同线段树 注意51061^2 2147483647,要开unsigned int // sz[]别忘了。。 include include include define gc() getchar() define mod (5106 阅读全文
posted @ 2018-03-21 21:05 SovietPower 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目链接 洛谷 SPOJ BZOJ1095(简化版) Description 给定一棵边带权的树,初始时所有点为白色。两种操作:1. 反转某点的颜色; 2. 询问树中最远的两个白色节点的距离(只有一个则为0)。 n105, m2×105。 \(So 阅读全文
posted @ 2018-03-21 18:45 SovietPower 阅读(290) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 从一个点只能往后跳,即后继状态只有一个,那么拿nxt[x]做fa[x]啊!这样就成了一棵树,从每个点开始的答案是它到所在树的根节点的距离。 nxt[]的更改即动态修改树边,用LCT即可。 这样查询需要的就是 Access(x),Splay(x);return sz[x];(sz[lso 阅读全文
posted @ 2018-03-21 15:25 SovietPower 阅读(222) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" cpp //25884kb 11000ms //用1e6的数组记录当前路径长度的最少边数 include include include define gc() getchar() const int N=2e5+5,M=N=K) return; dis[++dis 阅读全文
posted @ 2018-03-21 12:49 SovietPower 阅读(170) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "LCT(良心总结)" cpp include include include define gc() getchar() const int N=3e5+5; inline int read() { int now=0;register char c=gc(); for(;!isdi 阅读全文
posted @ 2018-03-21 11:21 SovietPower 阅读(216) 评论(1) 推荐(1) 编辑
摘要:题目链接 洛谷 Description 二维平面中初始有n个点,m次操作:1. 在某个位置新建一个点;2. 询问当前所有点中离某位置最近的点有多远。 n,m3×105Solution 考虑对于两个点a,b,距离为|x[a]-x[b]|+|y 阅读全文
posted @ 2018-03-21 08:42 SovietPower 阅读(341) 评论(0) 推荐(0) 编辑
摘要:"题目链接" ~~按套路~~行列作为两部分,连边 SrowcolumnT。 S向代表行的元素连边cap(A[i][n])(容量上下界为上下取整),代表列的元素向T连边cap(A[n][i]),对于每个元素(i,j)由行i向列j连边cap(A[i][j]). 考虑我们建的这张图实际流量是什么 阅读全文
posted @ 2018-03-19 22:50 SovietPower 阅读(199) 评论(0) 推荐(0) 编辑
摘要:[TOC] 2018.3.18 Test 时间: 3.5h 得分: 太zz不写了(T3 60暴力分就我没看。。) "BZOJ总题目链接" "LOJ总题目链接" T1 BZOJ.4868.[六省联考2017]期末考试 "题目链接" T2 "题目链接" T3 BZOJ.4870.[六省联考2017]组合 阅读全文
posted @ 2018-03-18 13:47 SovietPower 阅读(299) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 题意: 给定一棵有n个点的树,多次询问树上距离为k的点对是否存在。k include include define gc() getchar() // define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EO 阅读全文
posted @ 2018-03-17 14:21 SovietPower 阅读(337) 评论(0) 推荐(0) 编辑
摘要:"BZOJ1468" "POJ1741" 题意: 计算树上距离v路径权值)。 这样x的答案就计算完了,将这一过程记作Solve(x)。 考虑如何计算所有点。DFS的效率是和树深有关的。计算x v时,我们选取v子树上的重心作为下次Solve()的参数。 选取重心每次都会使树的节点个数减半,因此递归深度 阅读全文
posted @ 2018-03-17 11:01 SovietPower 阅读(154) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 矩形查询可以拆成四个点的前缀和查询(树套树显然 但是空间不够) 每个操作表示为(t,x,y),t默认有序,对x分治,y用树状数组维护 初始赋值需要靠修改操作实现。 cpp //119964kb 4380ms include include include define gc() get 阅读全文
posted @ 2018-03-15 20:13 SovietPower 阅读(311) 评论(0) 推荐(1) 编辑
摘要:"题目链接" Description 给定SA数组,求满足SA[]的一个原字符串(每个字符为小写字母),无解输出 1. Solution 假设我们现在有suf(SA[j]),要构造suf(SA[i]) (要满足i j) 考虑后缀的比较方式,先比较第一位,再比较suf(SA[i]+1)与suf 阅读全文
posted @ 2018-03-15 18:01 SovietPower 阅读(216) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ3262" "洛谷P3810" cpp / 5904kb 872ms 对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会。。) / include include include define gc() getchar() defi 阅读全文
posted @ 2018-03-15 17:35 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "简易CDQ分治教程" cpp //每个操作分解为一个有序数对(t,p),即(时间,操作位置),时间默认有序,用CDQ分治处理第二维 //对于位置相同的操作 修改优先于查询 //时间是默认有序的 所以可以忽略掉对操作的影响;有影响的只是位置。(再理解) include include 阅读全文
posted @ 2018-03-15 15:34 SovietPower 阅读(228) 评论(0) 推荐(0) 编辑
摘要:给定两个字符串,求它们有多少个相同子串。相同串的位置不同算多个。 阅读全文
posted @ 2018-03-15 14:02 SovietPower 阅读(213) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 求两个字符串长度不小于k的公共子串对数。 Solution 求出ht[]后先减去k,这样对于两个后缀A',B',它们之间的贡献为min{ht(A)}(A'到B'ht[]的最小值)。 维护一个栈,栈中ht从底到顶递减。 如果当前是求B中后缀i和前边A中子串 阅读全文
posted @ 2018-03-14 21:56 SovietPower 阅读(212) 评论(0) 推荐(0) 编辑
摘要:"题目链接 POJ2774" "SPOJ1811 LCS Longest Common Substring" 比 "后缀自动机" 慢好多(废话→_→)。 Description 求两个字符串最长公共子串 Solution 任何一个子串一定是某个后缀的前缀 可以将两个字符串拼在一起,中间用一个 阅读全文
posted @ 2018-03-14 19:55 SovietPower 阅读(197) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定一段数字序列(Ai∈[1,88]),求最长的两个子序列满足: 1.长度至少为5 2.一个子序列可以通过全部加或减同一个数来变成另一个子序列 3.两个子序列没有重叠部分 Solution 求不重叠最长重复子序列: SA: 首先二分k,判断是否存在长度为 阅读全文
posted @ 2018-03-14 17:54 SovietPower 阅读(261) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 论找到一个好的教程的正确性。。 "后缀数组" 下标从1编号: cpp //299ms 2560kb include include include const int N=1e5+5; int n,sa[N],rk[N],sa2[N],tm[N],ht[N]; char s[N]; v 阅读全文
posted @ 2018-03-14 14:54 SovietPower 阅读(233) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先数位DP 用f[i][0/1]表示匹配到第i位前面i 1位是否为上界。 这样还需要状态转移,对于每个状态 枚举每一个数,用AC自动机得到下一个状态(这样状态其实就是在树上的标号) ps1.数不能带前导0(因为会有00...这样的串),对每一位要先加上以每个非零数开头的方案数 ps2 阅读全文
posted @ 2018-03-11 16:49 SovietPower 阅读(267) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //删掉一个单词需要前移一段位置,用链表维护就好了 复杂度O(sum(len)) include include define S 26 const int N=1e5+7; int n; char s[N],p[N]; struct AC_Automaton { int cn 阅读全文
posted @ 2018-03-11 12:45 SovietPower 阅读(226) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先不需要存储每个字符串,可以将所有输入的字符依次存进Trie树,对于每个'P',记录该串结束的位置在哪,以及当前节点对应的是第几个串(当前串即根节点到当前节点);对于'B',只需向上跳一个节点。 然后构建Trie图。fail[]有一个重要意义是: 若fail[y]=x,那么y节点表示 阅读全文
posted @ 2018-03-11 09:31 SovietPower 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目链接: "简单版" , "增强版" 简单版: cpp include include const int N=1e6+5,S=26; char s[N]; struct AC_Automaton { int cnt,q[N],val[N],fail[N],las[N],son[N][S]; // 阅读全文
posted @ 2018-03-08 19:10 SovietPower 阅读(242) 评论(0) 推荐(1) 编辑
摘要:"题目链接" Description 求给定字符串中 最长的k个回文串长度的乘积(要求回文串长度为奇数);若奇数长度回文串不足k个则输出 1.(len include define rg register define mod 19930726 typedef long long LL; con 阅读全文
posted @ 2018-03-08 16:05 SovietPower 阅读(196) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 设f[i][j]为当前是第i位考号、现在匹配到第j位(已有j 1位和A[]匹配)的方案数 因为假如当前匹配j位,如果选择的下一位与A[j+1]不同,那么新的匹配位数是fail[j]而不是0,那么设由匹配j位转移到匹配k位的方案数为t[j][k] 那么 $f[i][j] = ∑f[i 1 阅读全文
posted @ 2018-03-08 14:48 SovietPower 阅读(192) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 896kb 6816ms A+B+A是KMP的形式,于是固定左端点,对于每个位置i,若fail[i]所能到的点k中(k=fail[fail[fail[...]]]),有满足len(l~k)+len(i k+l 1,i)=K,则i满足条件 每个位置仅计算一次 就很好做了 O( 阅读全文
posted @ 2018-03-08 10:44 SovietPower 阅读(144) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定平面上n个点,将这些点染成红or蓝色,要求每行、每列红色点与蓝色点数量的差的绝对值y(column)的边 这样我们可以将边染色,使得与每个点相连的两种颜色差 include define gc() getchar() const int N=4e5+5, 阅读全文
posted @ 2018-03-05 16:24 SovietPower 阅读(291) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先Bi之间的大小关系没用,先对它排序,假设从小到大排 那么每个Ai所能匹配的Bi就是一个B[]的后缀 把一个B[]后缀的匹配看做一条边的覆盖,设Xi为Bi被覆盖的次数 容易想到 对于每个i∈[1,m]都要满足 Xi i = 0,即min{Xi i} =0 (Hall定理) 用线段树维 阅读全文
posted @ 2018-03-05 11:21 SovietPower 阅读(382) 评论(0) 推荐(0) 编辑
摘要:题目链接 dbzoj Descriptionk个国家,n个城市分属于不同国家,m条边。要求每个国家有恰好一个城市作为首都,每条边至少有一个端点是首都。 求是否有解。 n,m,k106Solution 每个城市要么建首都要么不建,考虑2-SAT 阅读全文
posted @ 2018-03-05 09:15 SovietPower 阅读(461) 评论(0) 推荐(1) 编辑
摘要:"题目链接" Description 给定a,b,x,p,求[1,x]中满足n a^n ≡b (mod p) 的n的个数。$1 typedef long long LL; LL a,b,p,x; LL FP(LL x,int k) { LL t=1; for(; k; k =1,x=x x%p) 阅读全文
posted @ 2018-03-05 07:19 SovietPower 阅读(287) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 比较容易想到用f[i][j]表示走了i步后到达j点的方案数,但是题目要求不能走上一条走过的边 如果这样表示是不好转移的 可以考虑边,f[i][j]表示走了i步后到达第j条边的方案数,那么有 f[i][j] = ∑f[i 1][k] (边k能直接到达边j) 只要不走反向边,就保证了不会走 阅读全文
posted @ 2018-03-04 20:39 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定d张无向图,每张图都有n个点。一开始,在任何一张图中都没有任何边。 接下来有m次操作,每次操作会给出a,b,k,意为在第k张图中的点a和点b之间添加一条无向边。 你需要在每次操作之后输出有序数对(a,b)的个数,满足$1\ 阅读全文
posted @ 2018-03-04 10:43 SovietPower 阅读(666) 评论(3) 推荐(1) 编辑
摘要:题目链接 Description 给出一个n个点的有向图,任意两个点之间有且仅一条有向边。对于每个点v,求出从v出发的一条经过点数最多,且没有重复经过同一个点一次以上的简单路径。 n<=2000 Solution 详细题解在这 竞赛图缩点后得到的拓扑图一定是一条链,因为竞赛图任意两点 阅读全文
posted @ 2018-03-04 08:55 SovietPower 阅读(670) 评论(0) 推荐(0) 编辑
摘要:题目链接 Description 给出一个n个点m条边的无向图。 你每次需要选择两个没有边相连的点,将它们合并为一个新点,直到这张图变成了一条链。 最大化这条链的长度,或输出无解。 n<=1000,m<=10000 Solution 不难发现无解当且仅当存在奇环。 归纳证明:有一个奇 阅读全文
posted @ 2018-03-03 20:56 SovietPower 阅读(351) 评论(2) 推荐(1) 编辑
摘要:"题目链接" Description 给定一天24h 每小时需要的员工数量Ri,有n个员工,已知每个员工开始工作的时间ti(ti∈[0,23]),每个员工会连续工作8h。 问能否满足一天的需求。若能,输出最少需要多少员工。 Solution "参考" . 既然给的是开始工作时间,那么就先根据 阅读全文
posted @ 2018-03-03 15:37 SovietPower 阅读(166) 评论(0) 推荐(0) 编辑
摘要:有n个人在一条直线上跑步,每个人的起点 Si、终点 Ei 已知;每个点可以放一个广告牌,一个人i能看到的广告牌数量为 EiSi+1。 要求使每个人看到的广告牌数量不小于 k (若 $Ei-Si+1 阅读全文
posted @ 2018-03-03 14:43 SovietPower 阅读(208) 评论(0) 推荐(0) 编辑
摘要:题目链接 Description 求图的欧拉回路(找一个环使每条边恰好出现一次)。若t=1该图为无向图,否则为有向图。 n105, m2×105Solution 这数据。。简直了 有自环和重边,有些点可能没有连边(并查集不好使 就 阅读全文
posted @ 2018-03-03 11:15 SovietPower 阅读(246) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-03-03 09:46 SovietPower 阅读(178) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 建边不说了。对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾 Tarjan也用不到 cpp //964kb 76ms include include include const int N=2005,M=16005; int n,m,Enum,H[N], 阅读全文
posted @ 2018-03-01 14:29 SovietPower 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 存在一个环,说明什么? 画了一下样例二,直接是个环;然后重新画了下样例一,可以画成一个环,非环上的边可以连在环内或环外 这些非环上的边不能相交。然后就成了 "POJ3207" 原题了,只是圆上排列顺序不同。 不过边数很多,必须利用平面图的性质: 平面图的边数小于等于3n 6,来将边数降 阅读全文
posted @ 2018-03-01 11:25 SovietPower 阅读(157) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意摘自:https://www.cnblogs.com/wenruo/p/5885948.html Description 一对新人请n-1对夫妻吃饭,人们坐在一张桌子的两侧,每一对互为夫妻关系的人必须坐在桌子的两侧。而且有些人两两之间会存在“通奸”关系,通奸关系不仅在男女之间, 阅读全文
posted @ 2018-03-01 10:11 SovietPower 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目链接 以下转自:zck921031. Description 有一个大小为N的集合S=x1,x2,....,xnxi=01,给出它们之间的一些逻辑运算的结果(如x1 and x2=1),逻辑运算有AND OR XOR三种,问是否存在一种满足所有条件的取值方案。 阅读全文
posted @ 2018-03-01 06:37 SovietPower 阅读(225) 评论(0) 推荐(0) 编辑

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