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