02 2018 档案
摘要:题解:最小割建模 如果某些元素在一起会得到收益考虑最小割 答案 总收益-最小割 注意:对0点的处理 一开始模型是错的
阅读全文
摘要:题解: 枚举左端点,找到合法的最大的右端点 依次选取m段 当某一段的最大右端点被选过了,才能选次大右端点 开一个堆,维护元素(begin,maxp,l,r)表示当前begin为左端点,l,r为合法区间,maxp为最大右端点 每次选取贡献最大的区间,然后按maxp分裂成两部分,次大右端点在这两部分中,
阅读全文
摘要:题解:交换某节点的两棵子树仅对 此节点子树对答案的贡献 有影响 Dfs,启发式合并时顺便求逆序对即可,贪心交不交换 O(nlogn*logn) Noname讲过一种合并Treap求逆序对,仅需O(nlogn),还不会 注意:插入时维护路径上的siz,插入完Splay到根节点的儿子
阅读全文
摘要:题解:斜率优化,维护上凸包,类似右上半圆 滚动数组优化空间,DP时记录决策点 注意:注意sum[i]-sum[j]可能==0 出题人就给了32分QWQ 其实本代码有Bug但是数据没卡 对于直接把0元素去掉然后DP可能使得序列不足m
阅读全文
摘要:题解:动态点分治 建立点分树 每个点维护点分树子树内节点到这个节点和父亲节点距离的前缀和 二分查找锁定合法区间 对每个祖先分治中心查询路径和然后减去不合法子树内的路径和 注意:求大量LCA时用树剖 不开O2时少用STL 相乘炸int lower_bound和upper_bound返回值边界 注意常数
阅读全文
摘要:题解:Floyd应用 d[i][j]两点最短路 c[i][j]两点最短路条数 转移 若d[i][k]+d[k][j]<d[i][j]则c[i][j]=c[i][k]*c[k][j] 若d[i][k]+d[k][j]==d[i][j]则c[i][j]+=c[i][k]*c[k][j]; 统计答案时当d
阅读全文
摘要:题解:每个炸弹爆炸影响一个区间,通过二分查找找到 若A爆炸炸到B则连一条A到B的边 线段树优化建图 缩点+DP 因为每个炸弹的答案一定是一个区间,所以记录每个节点的左端点和右端点 合并时取最值 反思:思维定式,以为求解可达点个数不能合并
阅读全文
摘要:题解:求最大生成树,则边一定在最大生成树上,证明用Kluscal 然后就是倍增 TMD我竟然建树写错了,MDMDMDMDMDMD 为什么一开始没想到QWQ 总结:不要往难处想
阅读全文
摘要:题解:二分图匹配 行列建点 每一条边i->j表示第i行移动到第j行符合题意,即a[i][j]=1 可证明不需考虑列的交换 求最大匹配即可
阅读全文
摘要:模板 公式:Lucas(n,m)=C(n%p,m%p)*Lucas(n/p,m/p) Lucas定理保证了求C时逆元存在 注意逆元存在条件 不会证明
阅读全文
摘要:题解:中国剩余定理 通解:ans=a[i]*M[i]*Inv(M[i],m[i])+k*M 注意window与linux下读入输出差异
阅读全文
摘要:题解:带修改莫队 左右端点相同按?排序 问题:不会证时间复杂度
阅读全文
摘要:题解:找出横着的联通块和纵着的联通块(能被炸弹一下炸到的) 如果一个炸弹能同时影响到某两个联通块就在联通块之间连边 这是一个二分图,求一下最大匹配 WoLeGeCao 50*50是2500不是250
阅读全文
摘要:题解: 解法一:建立图论模型,发现只要联通块中有环则这个联通块中的值都可以被攻击到 如果是树,则只能攻击size-1个 解法二:二分图匹配,二分答案,看看是否能攻击到mid
阅读全文
摘要:题解:枚举最大边,然后对<=最大边的边做最大生成树,使最小边最大
阅读全文
摘要:题解:枚举最后在哪里停止,然后剩下的步数/2 也就是找最大深度 枚举终止位置算是一种思路吧
阅读全文
摘要:题解:求m的原根,把乘法转化成加法,然后用NTT加速动态规划听说这是循环卷积???并不会啊,留个坑。 NTT连板子都不熟
阅读全文
摘要:题解:主席树,上一层为父亲节点对应的主席树 查询就用 u+v-lca-fa[lca]即可
阅读全文
摘要:题解: 这是两道题 前50%: 发现p[i][j]很小,于是记录f[i][j][k]表示(1,1)~(i,j)这个子矩阵内>=k的书的总高度,g[i][j][k]记录本数 查询是二分答案就好了 后50%: 主席树,右子树够了就向右走,否则向左走
阅读全文
摘要:题解:历史最值线段树 参见吉司机的论文 还是不熟,自己打打不出来 维护当前和历史两套标记,最大值,加法标记,减法标记 每到一个节点先pushdown(不知道为什么) 正确性不是很理解QWQ 还是自己太弱了
阅读全文
摘要:题解:矩阵树定理 邻接矩阵-度数矩阵(期望下) 求出来的行列式为所有(生成树边权乘积)的和 每条边边权化为 c/(1-c),最后乘上π(1-c),对1边权特殊处理一下 问题:矩阵树定理不熟,不会证明
阅读全文
摘要:题解:xor最大路径一定是几个环加上从1到n的路径 环用tarjan处理 最大xor和用线性基处理 喵啊
阅读全文
摘要:题解:建立圆方树,每个点向环内深度最浅的点连边 分LCA是不是方点讨论即可 如果是方点讨论从哪边绕过去的 园点的话直接用最短路处理即可 问题:双联通分量不熟
阅读全文
摘要:题解:切比雪夫距离转化为曼哈顿距离 枚举源点,横纵坐标互不影响,分开考虑,前缀和优化 横纵分开考虑是一种解题思路
阅读全文
摘要:题解:按照点的Dfs序走 用Splay维护Dfs序即可 插入时找前驱和后继,插在中间
阅读全文
摘要:题解:对询问点建立虚树 然后在虚树上Dp 每个点父边边权为这个点到根的边权最小值 一开始学了假的虚树 一开始竟然没想到父边边权可以这样赋
阅读全文
摘要:题解:建立AC自动机,然后Dp 考虑长度与n相等时 f[i][j][2]表示第i位匹配到AC自动机第j号节点,是否顶着上界的方案数 转移枚举这一位填什么 注意,如果当前节点沿Fail树能走到单词节点就不能转移到他 长度<lenn不用考虑顶上界 问题:不明白最后统计答案的方式
阅读全文
摘要:题解:发现问题的本质,即堆的个数 动态规划一下 f[i]表示前i个元素形成的堆的个数 第i个元素为根,左右子树又是两个堆 注意:逆元存在条件
阅读全文
摘要:题解: 长度定为3 线段树维护区间hash值 从左向右处理,依次在数轴上插入处理的元素; 如果当前数轴不对称,则缺失的那个元素一定在后面出现
阅读全文
摘要:题解:树链剖分一下 对线段树每个节点维护双堆,支持插入删除 对于每一条请求,给这个请求没经过的点加入这个值,共logn个区间 查询就是线段树上的单点查询
阅读全文
摘要:题解: 解法1: 树链剖分一下,对每条链建立一颗Splay 以宗教为第一关键字,深度为第二关键字建立 查询相当于Splay的一个区间 修改相当于删除一个节点,加入一个节点 O(nlog^2n) O(n); 解法2: 树链剖分一下,对每条链建立maxc棵权值线段树,动态开点 O(nlog^2n) O(
阅读全文
摘要:题解:容斥原理,总的三角形减去不符合题意的三角形 不符合题意的三角形即三点共线 设一个端点在(0,0),枚举另一个端点,用gcd算出线段中间夹着的点 因为相同的线段可以同时计算 所以复杂度O(n^2log) 容斥错了WA了几发QWQ
阅读全文
摘要:题解:整体二分 以时间为关键字进行整体二分 用线段树维护区间和 Woc这题居然爆int,以后注意爆int的可能
阅读全文
摘要:题解:Dp+线段树维护所有决策 f[i][j]表示第j个基站建在第i个位置,i之前的村庄与建基站的总费用的最小值 以j为阶段 枚举i,维护所有决策f[x][j-1]; 当一个村庄q不能被i覆盖了,那么在1~p之间建立基站的决策费用要+c p为q左边第一个不能覆盖q的村庄 复杂度O( nklogn);
阅读全文
摘要:题解:burnside引理 DP出不动点的数目,用burnside引理算等价类 问题:不明白burnside引理的原理
阅读全文
摘要:题解:a%b=a-[a/b]*b; ans=n*k-sigma([k/i]*i]); [k/i]有sqrt(k)种取值 last=k/(k/last);
阅读全文
摘要:题解:树上差分就可以了 论看懂题意的重要性 最后-1的时候处理错了,WA了几发
阅读全文
摘要:题解:对每一位分别考虑贡献 先求前缀和 按照二进制减法分类讨论,求出最终这一位是1还是0 用树状数组维护 注意:树状数组对0这个位置单独考虑
阅读全文
摘要:题解:DP一下 每一行为阶段 发现只有3种本质不同的列,即已经放了0,1,2三个棋子的列
阅读全文
摘要:题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论 最后用nlogn预处理一下,O(1)出答案 把long long 打成int 竟然没看出来QWQ
阅读全文
摘要:题解:概率,f[i][j][2]表示到第i天一共申请了j次,第i天的课程是否申请的期望最短路 考场上这题得了0分QWQ 问题:对期望和概率的理解不够深 让保留2位小数我TM用了cout,WA了几发
阅读全文
摘要:题解:加权并查集或差分约束 一开始并查集竟然打错了QWQ
阅读全文
摘要:题解:贪心,每次选深度最大的未被覆盖节点,在他的2级祖先处放一个 不会DP做法QWQ
阅读全文
摘要:题解:运用筛法的思想,%p意义下,F(x)!=0则F(x+p)!=0 多选几个质数把F(x)!=0的筛去就可以了
阅读全文
摘要:题解:哈夫曼树 先补全节点,以总个数为第一关键字,高度为第二关键字,求哈夫曼树即可 问题:不明白哈夫曼树的原理及证明
阅读全文
摘要:题解:求解每个位置向左向右AA串的个数f[x],g[x]; 枚举A的长度,每A个位置设一个关键点 每一个A一定仅且跨越一个关键点 然后求出相邻关键点向前向后的最长公共前缀的长度,这会对一段区间的f,g产生影响; 用差分+前缀和统计答案
阅读全文
摘要:题解:在线建立AC自动机,建好Fail树,a是b的子串也就是b到root的节点能沿Fail树走到a 离线所有询问,DFS一遍的时候顺便处理询问 或按b排序在AC自动机上走也可以 用树状数组维护,查询区间和即可 一开始LCA打错了竟然得了70害得我找不出错
阅读全文
摘要:题解:为每条非树边赋一个权值 每条树边的权值为覆盖他的非树边权值异或和 如果边集的子集线性相关,相当于把树边和非树边拦腰砍断,则不连通 用线性基判断线性相关 问题:为什么srand(time(0))会RE?
阅读全文
摘要:题解:先在原网络上跑最大流,然后加上带费用的边跑费用流 高一的时候做这道题怎么想不到? 注意:maxn代表的不一定是同一个变量的范围
阅读全文
摘要:题解:记忆化搜索 本质不同的颜色就6种,能图0,1,2,3,4,5块木块的颜色 f[x][a][b][c][d][e]表示上一块图的是本质为x的颜色,本质为1,2,3,4,5的颜色分别剩余a,b,c,d,e种的方案数 转移枚举这一块填什么就行了 还是写错了一个地方没查出来QWQ
阅读全文
摘要:题解:动态点分治 建立点分树,每个节点维护两个容器 记录本子树内到点分树父亲节点的路径长度集合 和自己所有子树内节点到自己的最长路径构成的集合 //语文不好,凑合着看吧QWQ 支持删除,所以用双堆来维护即可 同时维护全局堆统计答案
阅读全文
摘要:题解:最大流 s连as bs at bt连t 求最大流是否==af+bf 但是这样不对 因为as可能流到bt 所以再 s连as bt at bs连t 再求一遍最大流 相当于让as流到bt的流流不过去 少打了一个+号WA了好几发
阅读全文
摘要:题解: dep[LCA(a,b)]等价于把a到根路径+1,然后询问b到根路径的权值 按左右端点分别排序求出值后作差就可以了 分块TLE了QWQ LCT代码 分块代码
阅读全文
摘要:题解:LCT维护Splay形态 Splay后发现只会有几个点发生变化,用LCT维护一下就可以了 在Splay中维护siz 还可以用Splay维护DFS序,旋转后DFS序不变,深度以子树为单位变化 天真的我以为直接模拟Splay可以A掉QWQ
阅读全文
摘要:题解:裸的缩点+最短路(DP)
阅读全文
摘要:题解:裸的斜率优化 少了一个括号WA了几发QWQ 总结:以后不能写这么长的式子 问题:我还不会决策单调性QWQ
阅读全文
摘要:题解:裸cdq分治 一开始处理相同花的时候搞错了,WA了几发
阅读全文
摘要:题解:用LCT维护parent树的Right集合大小 为什么我的代码这么慢??? 问题:对SAM理解的还不够深 吐槽:神加密
阅读全文
摘要:题解:动态树,维护Splay最深的被标记过的点 每个询问先Access(x); 当然用树链剖分也可以
阅读全文
摘要:题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍
阅读全文

浙公网安备 33010602011771号