随笔分类 - 题解
摘要:题目链接:https://www.luogu.com.cn/problem/P4315 题意:一棵有边权的树,维护树上的链加、链覆盖、修改边权、链上max 题解: 好难写... 首先把边权转化为儿子的点权 然后树链剖分,需要注意覆盖和加的先后顺序。可以这么考虑: 有一串操作,为 加 覆盖 加 覆盖
阅读全文
摘要:概括:边权为0/1的图求最短路,常见于网格图的bfs。本质是特殊的dijkstra,因为边权只有0/1,不再需要优先队列维护 Luogu4667 注意需要维护的是格点的坐标和格子的坐标,然后边权如果为0(不换)就push_front,如果为1(换)就push_back // by SkyRainWi
阅读全文
摘要:比赛链接:https://codeforces.com/contest/1740/ 题解: AB 简单题 // by SkyRainWind #include <cstdio> #include <vector> #include <cstring> #include <iostream> #inc
阅读全文
摘要:比赛链接:https://codeforces.com/contest/1754 题解: AB 水题 // by SkyRainWind #include <cstdio> #include <vector> #include <cstring> #include <iostream> #inclu
阅读全文
摘要:题目链接:https://codeforces.com/contest/1746/problem/D 题解: 显然,对于某个点,如果此时经过该点的路径个数为,那么他的儿子的经过个数一定为或者,直接枚举哪些位置+1是指数级别的,注意到总共有多少个+1是
阅读全文
摘要:题目链接:https://codeforces.com/contest/708/problem/C 题解: 有一个简化:我们把重心当成根,这样所有点,如果不是重心,问题只可能出在该点向上的那个“子树”中 考虑对每个点维护向上子树中的最大的不超过n/2的子树大小,这样最后判断一下去掉这个子树之后大小是
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2167 题解: 摘录一段描述容斥题目的话: 本题中, 关于容斥系数,可以先感性理解一下,严格证明可以用 即除了自身,自身的超集都计算了0次,自身计算了一次 这样可以写出 答案就是对所有大小为k的集合 很好算,
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P5664 题解: 首先注意到至多有一个食材可能超过一半 不妨枚举这个食材,然后统计其超过一半时的方案数,最后容斥一下减去即可 一个比较初级的想法是钦定了第col列,设表示考虑到第 i 行,第 co
阅读全文
摘要:题目链接:https://atcoder.jp/contests/arc101/tasks/arc101_b 题解: 直接求序列的中位数不好求,考虑分析性质: 设,如果的中位数小于 k,那么b的和一定大于0,而且这个和一定随k增大
阅读全文
摘要:概念题 滑动窗口 模板题,维护一个值和一个下标即可 Luogu2216 首先对每行做一遍滑动窗口,然后发现其实列也是个滑动窗口 // by SkyRainWind #include <cstdio> #include <vector> #include <cstring> #include <ios
阅读全文
摘要:比赛链接:https://codeforces.com/contest/1739 AB 水题 // by SkyRainWind #include <cstdio> #include <vector> #include <cstring> #include <iostream> #include <
阅读全文
摘要:2607:一个基环树,有点权,全是有向边,选儿子则不能选父亲(反之亦然),问选出的集合的最大点权和 注意到题目的特殊性,如果i->hatred[i],那么就是一个内向树,否则为外向树 内向树好找环,但是不方便统计答案,于是想到可以用外向树,在环上任一点断环成链,然后做两次树形dp(因为这一条边也是要
阅读全文
摘要:心血来潮看了看18年的联赛,感觉自己进步很大= = Day1 T1 对于一个“波”来说,显然需要的次数为最大的数(波峰),对于多个“波”,就每次记录一下从波底到波峰的高度差即可,这可以用差分简单实现 // by SkyRainWind #include <cstdio> #include <vect
阅读全文
摘要:一句话概括:浮点二分求解∑a/∑b的极值问题 引入:首先是这个题,浮点二分之后树上背包 进阶应用:最小(大)比率生成树/最小(大)比率生成环 以最大为例,关键就是考虑如果小了的话如何判断 生成树中,比如要让生成树的∑a/∑b最大,即∑a/∑b ,化简为∑(a-br)
阅读全文
摘要:C: 转化一下就是取中间部位,绝对值之和最小 // by Balloons #include <cstdio> #include <vector> #include <cstring> #include <cmath> #include <iostream> #include <algorithm>
阅读全文
摘要:对于某个排列p,将建个图发现这时对应的答案就是,注意与环中哪些数无关。 进一步观察可以发现这实际上就是这个问题:从的排列中分成个部分,令这个部分的size的lcm,求不同p的和/个数 看到lcm可以考虑质因子
阅读全文
摘要:其实已经做了不少题了,开个坑记一下在之前培训中遗留下来的题 CF327E 状压dp水题。一个小trick,如何比线性快的获取的每位二进制? for(int i = S;i;i -= lowbit(i))dp[S] += dp[S & ~lowbit(i)]要比每位分别判断要快 BZOJ4057
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P3354 题解: 考虑树形dp 设表示考虑到 i 点,j 是i的祖先中与i最近的伐木场,i及子树中共有 k 个伐木场的最小代价 我们发现,这样设状态无法表示 i 是否有伐木场这个条件,因此钦定 f[
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P3201 题解: 考虑启发式合并,即每次把数量小的颜色块合并到大的颜色块上 对于每个颜色块,我们可以使用链表维护,具体写法可以采用前向星。(当前位置的nxt置为head[x], head[x]=当前位置),这里head[p
阅读全文
摘要:A 普及组题 // by Balloons #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define mpr make_pair #define debug() cerr<<"Madok
阅读全文