随笔分类 - 题解
摘要:题意 https://www.luogu.org/problem/P2000 思路 打了一遍被清空了,心态爆炸。 把每个条件的生成函数求出来乘一起就好了,注意开高精。 代码 自己打。
阅读全文
摘要:注意 本文为愚蠢的暴力,仅能在奇怪的OJ上跑过奇怪的数据。 题意 给定一张有向图,对于每一条边,求删去该边后两端点最短路长度。 思路 数据过水,直接bfs就过了。 代码 cpp include using namespace std; namespace StandardIO { templatei
阅读全文
摘要:题意 给定两棵有根树,两棵树均有n个节点,且根均为1号点。 问有多少对(u,v)满足:在给定的两棵树中u均为v的祖先。 思路 本题即求对于所有节点x,两棵树中公共的儿子数量之和。 对于第一颗树,求出其dfs序,然后遍历第二棵树,每达到一个节点,查询该节点的值,表示这个节点同时被两棵树的一些节点
阅读全文
摘要:题意 当给定一个序列 a[0],a[1],a[2],...,a[n 1]和一个整数 K 时,我们想找出,有多少子序列满足这么一个条件:把当前子序列里面的所有元素乘起来恰好等于K。 思路 比较裸的背包,将k质因数分解即可。 代码 cpp include using namespace std; nam
阅读全文
摘要:题意 有一棵树,从给定的节点出发,遍历所有节点,不要求路径不重叠。要求每一次前往的点与当前点的路径上没有访问过的节点数量最多,若有多个这样的节点,优先取字典序最小的。求遍历顺序。 思路 将出发节点设为树的根节点,dfs一遍,统计根节点到每个叶节点路径上的节点数量。(显然每一次路径的终点都是一个叶节点
阅读全文
摘要:题意 给定一个圈以及若干区间,希望覆盖整个圈。对于每个区间,求出必须选这个区间前提下的区间最少选取数。保证区间之间没有包含关系。 思路 可以把我们要选的区间想象成一个链(就是那种一环套一环的锁链),那么我们在将这个链拉紧的时候肯定是利用率最高,即长度最大的。 回到题目,我们对区间左端点排序,然后每次
阅读全文
摘要:题意 给定一个序列,定义和弦为长度在[L,R]上的连续元素集,其值为元素和。求最大的前k个和弦值之和。 思路 暴力思路是显然的:枚举左端点,然后依次枚举右端点得到最大值。 考虑优化:对于每一个左端点,能得到的最大值应该为$$max{sum[j]} sum[chosen_point]$$ 求最大值的过
阅读全文
摘要:题意 给定一个有多种颜色组成的序列,以及两种操作: 1. 将某种颜色全部染成另一种颜色。 2. 询问颜色段的数量。 思路 将每一种颜色的位置分别存入链表,然后染色的时候启发式合并。 这道题数据出的比较毒瘤,有同种颜色互相染色的数据,还有将已经不存在的颜色进行染色的数据,需要特判。 代码
阅读全文
摘要:题意 有一个森林,初始有一定的边。给定两种操作: 1. 查询两点路径上k小值。 2. 联通两点。 强制在线。 思路 维护主席树,合并的时候按照子树大小dfs暴力合。 代码 学校OJ AC BZOJ MLE Luogu MLE (然而学校OJ空间限制比洛谷小一半???) cpp include usi
阅读全文
摘要:题意 给定n个点以及两种操作: 1. 将两个点连接在一起 2. 询问两个点最早在什么时候联通。 强制在线。 思路 将时间作为权值,在并查集上跑lca即可。 代码 cpp include using namespace std; namespace StandardIO { templateinlin
阅读全文
摘要:题意 给定一个图,以及一颗树。求将树上的节点重新编号后,能够被图覆盖的种类数?节点个数≤17。 思路 考虑朴素的树上dp。 设子状态为$dp[i][j][s]$,表示节点i的编号为j,包含子树所构成的点集为s的种类数。 转移的时间复杂度为$O(n3^n)$,完美被卡。 考虑题目给出的限制条件: 1.
阅读全文
摘要:题意 给定一颗树,要求将其上的节点分成若干组,使得每一组的节点互相不拥有祖先 后代关系。定义每一组的值为该组节点权值最大值,求值总和最小值。 思路 硬上不是很显然的贪心,但是数据中链的情况给了提示。 考虑链的情况: 对于根节点两侧的链,我们分别排序,然后覆盖选取即可。 这个贪心的正确性是显然的。 现
阅读全文
摘要:题意 这个真的有、复杂。 思路 背包的思路很显然: $F[i][j]=\sum f(k)+F[i 1][j k]$ 这个东西显然可以fft优化,但是复杂度还是过不了。 进一步观察式子 可以发现$F[i][j]=F[\frac{i}{2}][k] F[\frac{i}{2}][j k]$ 假设$F$的
阅读全文
摘要:题意 有两个手环,手环上均有$n$个珠子,每个珠子有一个值。你可以给第二个手环每个珠子加上同一个值。求$\sum(x[i] y[i])^2$的最小值。 思路 这道题还是比较young and simple的。 设加上的值为$c$,那么所求式子等价于$\sum(c+x[i] y[i])^2=\sum(
阅读全文
摘要:题意 给出数列$q$以及$F_j$的定义: $F_j=\sum_{i using namespace std; namespace StandardIO { template inline void read (T &x) { x=0;T f=1;char c=getchar(); for (; c
阅读全文
摘要:题意 给定一颗有根树,节点编号为1,2,...,N,其中点1为树的根。节点i有权值$V[i]$。你现在需要修改节点的权值,使得它们满足以下性质: 对于任意的节点i和j。若节点i为节点j的祖先,则有$V[i]\leq V[j]$。 现在的问题是,你最少需要修改多少个节点的权值,才能满足上述性质。注意,
阅读全文
摘要:题意 传说中,东海龙宫有一副绝世法宝——n张神迹卡牌,每张卡牌上都写着一个数字。哪吒闹海时,想要施法将龙宫这n张卡牌毁灭,若当前剩余的卡牌数量为k,哪吒就可以施法将所有数字为k的卡牌销毁,这样的操作可以一直进行到没有卡牌可以被毁灭为止。 但哪吒发现,只进行这样的操作可能没办法把所有卡牌消灭,于是他借
阅读全文
摘要:题意 给定一个背包和一堆物品,记$count(i,x)$为没有物品$i$的前提下对于容量为$x$的背包最多能放入的物品数。求$count$矩阵。 思路 容斥DP,维护两个dp数组: 子状态$f[i][j]$为正常背包子状态。 子状态$g[i][j]$为不选$i$的子状态。 可以想到$g[i][j w
阅读全文
摘要:题意 同 "潜入行动「JSOI2018」" ,但是监听器会监听自己。 思路 本题除了维护最少数量还需要维护方案数量。 子状态$f[n][0/1/2]$,表示$n$被自己、父亲或是儿子控制,$cnt[n][0/1/2]$侧表示方案数量。 转移分类讨论: $f[now][0]=min(f[to][0],
阅读全文
摘要:题意 给定一棵树,找出$k$个点,使$\sum dis(A_i,A_{i+1})$最小。 思路 显然选出的点构成一颗树,对于这样的树最优的排列方式使直径仅计算一次,其他边计算两次。 所以得出子状态$f[i][j][0/1/2]$表示以i为根的子树中选了j个点,这j个点中包含了0/1/2个直径端点的最
阅读全文

浙公网安备 33010602011771号