02 2018 档案
摘要:[bzoj][1] sol 只要把输入的后缀按$Rank$排个序,相邻的之间求个$lcp$,然后用单调栈维护一下即可。 可以作为单调栈的练手题。 剩下的就全是板子了。 code [1]: http://www.lydsy.com/JudgeOnline/problem.php?id=3879
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 很显然的虚树DP呀。 树上任意两点距离之和?其实只要考虑每一条边被计算了多少次即可,若这条边下方的关键点(也就是选出的那些点)数量为$i$,那么这条边的计算次数就是$i (k i)$。 然后最大最小值,直接对每个点记子树中所有关键点到它的最长/最短距
阅读全文
摘要:[bzoj][1] [luogu][2] sol pj难度,打表打到死。 以上$b,c$数组分别表示每个块的旋转方式以及块的大小。这就是打表的总量。 直接按位置dfs即可。 ~~我一开始还按块的编号dfs结果T到飞我真的太naive了~~ code 打表,比yyb的11k代码短多了~~(虽然跑得比他
阅读全文
摘要:[bzoj][1] [luogu][2] sol 首先有一个很显然的$O(nmT)$的$dp$。 设$dp[t][i][j]$表示$t$时刻钢琴移动到$(i,j)$位置的最长滑动距离。转移分滑动以及不动两种,判一下障碍物就可以了。 这样有50分。 然后发现100%的数据中$K\le200$,而且在每
阅读全文
摘要:[bzoj][1] 题面放一下 Description WC2014后无数人来膜拜jc,但是来膜拜的人实在太多了, 而且很多人是一连膜拜好几天。所以jc给这些人建了一座树 形的宿舍,而根节点(1号节点)住着jc。然而,由于设计 的原因,宿舍中只有一个水龙头。于是晚上打水就成了问题。 所有人都有一个大
阅读全文
摘要:[vjudge][1] 题意:给一棵树,每个点上有一个权值,求一条路径使得路径上权值的乘积膜$10^6+3$的结果为$K$,输出路径的两个端点$x,y$。如有多解,设$x include include using namespace std; int gi() { int x=0,w=1;char
阅读全文
摘要:[bzoj][1] [luogu][2] 题意:给出一个长度为n的字符串,求 $$\sum_{1\le{i} include include using namespace std; define ll long long int gi() { int x=0,w=1;char ch=getchar
阅读全文
摘要:[codeforces][1] 一句话题意 求区间数字出现次数的mex,带修改 sol 带修膜队不解释 带修膜队的排序! cpp struct query{ int id,l,r,t; bool operator include include using namespace std; int gi
阅读全文
摘要:[bzoj][1] [luogu][2] sol 按照$Height[i]$从大到小的顺序合并$SA[i]$和$SA[i 1]$。 考虑合并两个集合对答案的贡献。 方案数会增加$sz[x] sz[y]$ 最大值可以被$max(mx[x] mx[y],mn[x] mn[y])$更新 code cpp
阅读全文
摘要:[bzoj][1] [luogu][2] sol 首先把两个串拼在一起跑后缀数组。中间插入一个没有出现过的字符。 求完后缀数组之后考虑$O(n^2)$暴力统计:枚举前一个串和后一个串的两个位置,$ans+=lcp(i,j)$。 现在改为把一共$2n$个后缀按$Rank$顺序插入,每插入一个后缀,统计
阅读全文
摘要:BZOJ权限题qwq [Luogu][1] sol “两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串” 其实就是差分一波以后完全相同 所以对输入的数据进行差分,同时记一下每一个位置是属于哪个串的。 记得在串与串中间加入一个没有出现的字符。 求出SA后二分答案$mid$,问题变成:$He
阅读全文
摘要:[Luogu][1] 一句话题意 给出一个串,求至少出现了$K$次的子串的最长长度。 sol 对这个串求后缀数组。 二分最长长度。 如果有$K$个不同后缀他们两两的$lcp$都$ =mid$ 那么他们在$SA$中一定排在连续的一段区间,且两两之间的$Height[i] =mid$ 所以判断$Heig
阅读全文
摘要:[vjudge][1] 一句话题意 给两个串,求最长公共子串。 sol 把两个串接在一起求后缀数组。其实中间最好用一个没有出现过的字符连接起来。 判断如果$SA[i]$和$SA[i 1]$不属于同一个串的话就可以拿$Height[i]$更新答案 code cpp include include in
阅读全文
摘要:后缀数组总结 学习后缀数组可以参考2009年国家集训队论文《后缀数组——处理字符串的有力工具》BY罗穗骞 这里只有代码 cpp const int N = 1e6+5; char s[N]; int n,a[N],t[N],x[N],y[N],SA[N],Rank[N],Height[N],ans;
阅读全文
摘要:[bzoj][1] [luogu][2] sol 我不得不说这道题很码。。。 求$lcp$的话当然先来一发后缀数组+ST表。 可以二分一个答案$mid$,可知序列中与$c$的$lcp$大于等于$mid$的后缀肯定是$Rank$上的连续一段。 再二分一下找出这一段的左端点和右端点,设为$[up,dow
阅读全文
摘要:[bzoj][1] [luogu][2] sol 显然对于n个不同的数不好处理排序吧。 那什么情况下方便处理呢?只有0或1? 二分一个答案$mid$,把所有小于等于$mid$的数全部设为1,大于$mid$的数全部设为0。 然后就只要按要求排序就行了。用线段树维护01序列的排序,相信大家都会。 最后只
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 用set维护有宝物的点集。 可以证明行走路径$a[1],a[2]...a[n]$一定是按照点的dfs序排列。 因为$dist(u,v)=dep[u]+dep[v]+2 dep[lca(u,v)]$,dfs序相邻可以最小化$dep[lca(u,v)]$
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 虚树DP 所谓虚树就是把当前一次询问要用到的点全部拿出来建成的一棵树吗? 其实不只是这次询问的所有点,还要加上dfs序相邻的两个点的lca,这样才可能形成原树的结构。 接下来需要处理连边。其实只要维护一个栈每次保证从前往后都是祖孙关系就行了。一个点在
阅读全文
摘要:BZOJ权限题qwq [Luogu][1] sol 树上路径当然是淀粉质辣! 考虑所有过重心的路径。开一个$10^6$大小的数组$t$表示某一路径长度的最小边数,初始化为$inf(i 0)$,$t[0]=0$。 枚举重心的每棵子树进行$dfs$,假设获得了一条从重心出发边数为$dep$边权和为$di
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 补一篇左偏树的题解 骑士对于树上结点挂链,每次合并所有子树上的骑士后把所有攻击力小于城池防御值的骑士弹掉。 左偏树维护加乘懒标记 记得要pushdown delete的时候也要记得pushdown! code cpp include include
阅读全文
摘要:[题面][1] 题意 给出一张$n$点$m$边无向连通图,求每条边出现在多少个割集中。 $n\le20,m\le\frac{n(n 1)}{2}$ sol 所谓割集,就是指把$n$个点分成两个集合后,两个集合分别都是连通的。 所以我们可以预处理出每一个点集是否连通。 考虑边$(u,v)$。实际上$(
阅读全文
摘要:[题面][1] 题意 给一棵$n$个节点的树,每个节点上有一个颜色,颜色种数至多$k$种。 求树上有多少条路径满足包含所有颜色。 $n\le5 10^4,k\le10$ sol 树上路径想到淀粉质,$k\le10$想到状态压缩。 考虑过重心的路径,用一个二进制状态表示这条路径上包含的颜色集合。 对于
阅读全文
摘要:原题请见《左偏树的特点及其应用》BY 广东省中山市第一中学 黄源河 "luogu" 题意 给出序列$a[1...n]$,要求构造一个不下降序列$b[1...n]$使得$\sum_{i=1}^{n}|a_i b_i|$最小。 sol 首先很自然地能够想到,构造出来的序列$b[1...n]$一定可以划分
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 区间?可离线?顺手就掏出了莫队。 最主要的问题就是移动区间怎么做到$O(1)$更新答案。 我们考虑由$[L+1,R]$移动到$[L,R]$, 这样一共新产生了$R L+1$个子区间$[L,L],[L,L+1]...[L,R]$, 设$[L,R]$中最
阅读全文
摘要:[题面戳我][1] sol 很好想+很好写的一道题,然而比赛中我还是没有切掉qaq。 LCT 枚举左端点$i$,向右移动右端点指针$j$找到第一个成环的位置。此时$[i,j],[i,j+1]...[i,m]$都是合法答案。可见就是在区间$[i,j]$上区间加$m j+1$,再在$[j+1,m]$上加
阅读全文
摘要:"BZOJ" "Luogu" 求 $$f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j) 2^j j!$$ 其中$S(i,j)$是第二类斯特林数 $n\le10^5$,模$998244353$ sol ~~所以说后面两项到底是干什么的~~ 把$j$提到前面去 $$f(n)
阅读全文
摘要:[CF题面][1] 题意:求$\sum_{i=0}^{n}\binom{n}{i}i^k$ $n\le10^9,k\le5000$ 模$10^9+7$ [BZOJ题面][2] 题意:求$n 2^{\frac{n(n 1))}{2} (n 1)} \sum_{i=0}^{n 1}\binom{n 1}
阅读全文
摘要:NOIWC2018游记 接着PKUWC就是NOIWC了。感觉时间很紧呀,但越是紧张呢,就越让人心里觉得充实。 能够去NOIWC,应该是一次非常充实的体验吧。 这一篇游记是接着上一篇写的,时间点上完全都能够接起来。这是一个传送门 [PKUWC2018游记 by租酥雨][1] 如果没有什么不可抗因素阻碍
阅读全文
摘要:"UOJ" sol 这题真是太神啦! 对于S集合中的每个点对,给他们随机附上一个相同权值。 两个点在边(x,y)的两侧当且仅当一个点在x的子树中,另一个点不在x的子树中(假设x是y的儿子) 维护一下子树点权异或和,若x子树的异或和等于所有点对权值的异或和就说明(x,y)是一条必经边 splay终于使
阅读全文
摘要:"BZOJ" sol 维护点的连通关系和双连通关系,双连通分量就可以缩成一个点,开一个并查集搞一搞。 所以注意每一次跳父亲都要找他在并查集里面的根,即所有的fa[x]都要写成find(fa[x]) 像这种没有cut的LCT题目最好写并查集维护连通性,常数! code cpp include incl
阅读全文
摘要:"BZOJ" "Luogu" sol 整体二分,其实很简单的啦。 对所有询问二分一个答案mid,把所有修改操作中数字大于mid的做一个区间覆盖(区间加1) 查询就是区间查询 然后左右分一分即可 注意是第k大 然后关于树状数组的区间修改区间查询,有一篇学长的博客 "链接" ,其实原理还是蛮简单的。 比
阅读全文
摘要:"BZOJ" "Luogu" sol 首先发现肯定有解,又因为每个位置至多操作一次,所以最优解一定是在$[0,n]$之间 有一种可以在$O(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor)$复杂度求最优解的方法。 只要枚举这个数的倍数判断被操作了几次就行了。 如果最优
阅读全文
摘要:"BZOJ" "Luogu" sol 如果已经确定了一个序列,现要求把这个序列分成m个连续段作为答案,那么就可以用一个显而易见的DP DP显然可以得到当前序列下的最优解。 所以模拟退火~~瞎JB~~改一改序列每次DP一下就可以了 ~~据说这题random_shuffle可以AC~~ code cpp
阅读全文
摘要:"Luogu" sol 模拟退火呀 初始状态按顺序涂色,让同种颜色尽量放在一起。 每次随机交换两个位置,注意$\Delta$的计算 ~~瞎JB~~调一下参数就行了 可以多做几次避免陷入局部最优解 code cpp include include include include using names
阅读全文
摘要:"BZOJ" "Luogu" (洛谷和BZOJ上的数据范围不同,可能需要稍微调一调参数) sol 这题的参数调得我心累 模拟退火的模型可以形象地理解为:不断降温的小球在一个凹凸不平的平面上反复横跳,根据万有引力定理小球一定会停留在一个低洼的位置。在温度高的时候小球的运动幅度剧烈,同时也较容易地会接受
阅读全文
摘要:"BZOJ" sol 首先按横坐标排序。考虑CDQ,即考虑左边的点对右边的点的贡献。 可以发现,左边的点可以对右边的点做贡献的只有上凸壳上面的点 按照y坐标排序,如果是左边的点就更新上凸壳,如果是右边的点就在上凸壳上面二分,计算产生了多少的贡献。 但是右边的点可能会对右边的点产生阻挡。 可以对右边的
阅读全文
摘要:[又是权限题qwq][1] 一句话题意:带修改树上路径第k大 sol 数据结构?还是再见吧。学一手合格的整体二分,只有思维强大,才能见题拆题。 如果你做过整体二分的动态区间第k大就会发现这是一样的题。 无非是区间变成了树上路径。 怎么办呢?树剖+dfn序不就好了吗。 复杂度算下来貌似是$O(n\lo
阅读全文
摘要:[Luogu][1] 动态区间第K大的整体二分解法 之前学主席树的时候就做了这道题(明明是树套树不是主席树啊),码量挺大而且调了我一个晚上。换成整体二分我半个小时就写完了而且一A。 ~~写起来就是爽。~~ 其实原理很简单,先把修改和询问放在一起,注意这里不能排序,要严格按照时间戳进行处理。 区间的初
阅读全文
摘要:2018冬令营赛前停课总结 准确来讲应该是联赛后到现在这一阶段的总结吧。 联赛后第一周,$LCT$。跟着yyb学了一波,自己切了一点题目。 接着开始学网络流。直接跳过了$EK$投入$Dinic$的怀抱。还有$spfa$费用流,至于什么$ISAP$啊,$zkw$啊什么的至今都没有学。 12月26号开始
阅读全文
摘要:[BZOJ][1] [Luogu][2] sol 看上去是道数学期望题但实际上是个傻逼数据结构 首先答案的形式应该就是 $$\frac{\mbox{[l,r]区间内的子区间权值之和}}{\mbox{[l,r]区间内的子区间个数}}$$ 个数的话就是$(r l+1) (r l)/2$ 总和的话,考虑每
阅读全文
摘要:[Luogu][1] sol 首先解释一波这道题无重边无自环 设$f_i$表示$i$点上面的答案。 方程 $$f_u=\sum_{v,(u,v)\in E}(1 \frac PQ)\frac{f_v}{du_v}$$ $f_1$的那个方程加一个$\frac PQ$常数项 code cpp inclu
阅读全文
摘要:[BZOJ][1] [Luogu][2] PKUWC的Day2T3就叫随机游走 然后那道题我爆零了 皮这一下我很开心 sol 初步思路:求出每一条边期望会被走过多少次,然后排个序从大到小附上$1...m$的的权值。这样就能保证最小了。 然而一条边期望会被经过多少次?直接以这个作为高斯消元的自变量,方
阅读全文
摘要:[BZOJ][1] [Luogu][2] 今年PKUWC考期望步数所以我什么都不会。。。 赶紧学一波 sol 首先看见异或和,都是套路了。计算出每一位是1的概率直接相加即可。 设$f_i$表示$i$号节点到$n$为1的概率,就有这样的一个转移: $$f_u=\sum_{v,e(u,v)=0}\fra
阅读全文

浙公网安备 33010602011771号