03 2021 档案

摘要:题面 https://www.luogu.com.cn/problem/P4491 有 n 个空格,每个空格都可以填 m 种颜色,当恰好有 k 种颜色出现了 S 次时,权值为 w[k] ,求所有方案的权值和 分析 推导起来特别爽的题 首先 k 的最大值 $K=min(\left \lfloor \f 阅读全文
posted @ 2021-03-30 20:54 Vagari 阅读(65) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P2536 分析 考虑建一个像trie的东西,即向下一个节点连代表字母的边 那么对于 AGCT 就直接向下一个节点连边 对于 ? 则可以向下一个节点连所有字母的边 对于 * ,我们采用对通配符的惯用操作,向自己连所有字母的边,即 阅读全文
posted @ 2021-03-30 19:33 Vagari 阅读(94) 评论(0) 推荐(0) 编辑
摘要:A 判断奇偶因子谁多谁少 容易发现如果质因数分解,有 n 个 2 和 m 个非 2 质因子 则奇数因子有 2m 个 ,偶数因子有 2n+m1 个(没有 2 时没有) 可知当 n=0 时奇数多, n=1 时一样, n=2 时偶数多 #include <iostream> #inclu 阅读全文
posted @ 2021-03-29 21:34 Vagari 阅读(71) 评论(0) 推荐(0) 编辑
摘要:愤怒的小N 一眼多项式题,打扰了 积木小赛 枚举第2个串的一个子串时,可以在第1个串中同步找到匹配串,时间复杂度 O(n2) 考虑去重,在 SAM 的 DAG 上跑 n^2 次即可得到不重子串 岛屿探险 多合一屑题,打了暴力和小于等于限制不变的 d ,但是没调好 阅读全文
posted @ 2021-03-29 21:18 Vagari 阅读(108) 评论(0) 推荐(0) 编辑
摘要:A 炼金术师 离散化一下排个序取最值即可 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N=1e6+10; int a[N],x[N],y[N],n,m,ans; i 阅读全文
posted @ 2021-03-29 21:15 Vagari 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P2336 分析 先把姓名串在一起做后缀数组,注意各串之间要用不同的分隔符 然后对于每个读入的询问,二分确定它在排好序的后缀上可选的一段区间 接下来这种区间求不同元素出现次数的问题就是经典莫队了 求某元素出现次数,在莫队的时候做 阅读全文
posted @ 2021-03-29 21:08 Vagari 阅读(47) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P2178 分析 对酒名用处理出height,按照height从大到小枚举(排除 1 ),由于 LCP(i,j)=min(LCP(k,k-1))(k>i) ,所以在 height 单调递减的情况下,可以用用并查集合并 i 和 i 阅读全文
posted @ 2021-03-29 21:02 Vagari 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P1117 分析 其实朴素暴力就有 95pts ... 设 a[i] 为以第 i 位为结尾的 AA 串个数, b[i] 为以第 i 位开头的 AA 串个数 则答案为 in1a[i]×b[i] 阅读全文
posted @ 2021-03-29 20:43 Vagari 阅读(93) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P2900 分析 首先把长宽同时小于等于别人的土地除去,因为买下它的代价必然可以被覆盖 可以用按 w,l 双关键字降序排序除去,除完以后发现此时 w 单调递减 l 单调递增 考虑转移方程 $f[i]=min(f[j]+w[j]* 阅读全文
posted @ 2021-03-29 20:12 Vagari 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P6624 分析 后面那坨 gcd 直接欧拉反演掉,然后枚举 d ,原式形式变成 $\sum_{d=1}^{w_{max}} \sum_{T,d|w_{e1},d|w_{e2},...,d|w_{en-1}}\sum_{i=1} 阅读全文
posted @ 2021-03-29 19:50 Vagari 阅读(82) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P4111 分析 矩阵树裸题 一个连通图的生成树个数等于度数矩阵-邻接矩阵的矩阵的行列式 消成上三角求斜对角即可 代码 #include <iostream> #include <cstdio> #include <cmath> 阅读全文
posted @ 2021-03-29 19:21 Vagari 阅读(57) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P6622 分析 枚举每个信号塔的位置显然不行,考虑设置 DP 状态 f[S] 表示选择了集合为 S 的塔,排在前 |S| 个位置 方程则为 f[S|i]=f[S]+h[S,i] h[S,i] 表示 S 中与 i 有连边 阅读全文
posted @ 2021-03-27 16:31 Vagari 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P6619 分析 题目说的复杂,不过这种逐个对战多询问的基本上都有只和双方最值有关的结论,这题也不例外 简单整理可得对战消耗的能量是 2×min(ice,fire) 然后不难发现 $\sum 阅读全文
posted @ 2021-03-27 15:57 Vagari 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P5982 给定一01串,问有多少个01串与他的不同位数满足给定的限制,这种01串总共有三个,满足其中一个限制即可 分析 因为只需要满足一个其中一个限制所以我们考虑计算补集,即三个都不满足 因为是01串,所以当一个01串按位取反 阅读全文
posted @ 2021-03-27 15:34 Vagari 阅读(101) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3645 分析 BFS即可,因为是无权无向图 如果设不重复状态 (i,j) 表示第 i 个楼上的狗子跳跃能力为 j ,那么至多有 max(n,m)n 种状态 不难证明,若 jn阅读全文
posted @ 2021-03-25 19:37 Vagari 阅读(57) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P5967 分析 看这种可以线性扩展且要求第 k 小的问题,就容易想到超级钢琴的做法 初始将一个 (a[1],1) 加入小根堆 (sum,i) ,每次取出堆顶时可以扩展为 (sum+a[i+1],i+1) , (sum-a[i] 阅读全文
posted @ 2021-03-25 19:20 Vagari 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3646 分析 直接得到最终优美度是显然不可做的,注意到二进制位数并不多,考虑从高位逐位计算 设方程 f[i][j] 表示分组完第 i 个数,用了 j 组,最终优美度能否为 0 目前枚举到第 k 位,那么 k+1~maxbit 阅读全文
posted @ 2021-03-25 19:10 Vagari 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P6545 分析 一个定理:城墙必然包含左上角到各村庄的左上角的最短路 如何证明:考虑当前有一个城墙方案,不包含某条最短路,不难证明此时城墙必然将最短路分割为数段 将在被围住区域外的最短路补入城墙,原城墙部分删除,肯定更优,因为 阅读全文
posted @ 2021-03-25 18:40 Vagari 阅读(88) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P5292 问在无向图中某点对是否有边权组合为01回文串的路径 分析 考虑暴力,就是往队列里加入路径的首尾(一个0/1或者两个0/1),BFS扩展 复杂度 O(m^2) 可以发现因为可以走非简单路径,可以通过绕同一条边来获得长度 阅读全文
posted @ 2021-03-25 16:54 Vagari 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P5290 分析 容易发现一个子树内部的选择不会影响他的兄弟子树,考虑用堆来记录当前子树的若干内存段 显然,如果跨子树便可以选择一个与当前子树的某内存段结合。而且因为取max,所以选最大的两个结合最优 合并堆的时候启发式合并即可 阅读全文
posted @ 2021-03-25 16:45 Vagari 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3647 不重复地取树中相邻的两条边,每次得分为两条边权和,问最大得分 分析 容易想到状态 f[i][0/1] 分别表示 i 号点不作为/作为两条边的经过点的以 i 为根子树中的最大得分 显然有 $f[i][0]=/sum m 阅读全文
posted @ 2021-03-25 13:36 Vagari 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下0忍者的区间,去掉 然后再删去包含了其他区间的区间,没有意义 将剩余区间按左端点排序,方便处理 考虑 阅读全文
posted @ 2021-03-25 13:24 Vagari 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3643 对于一个序列,第i项可取的值在{0}∪[ai,bi]之间,求使序列非零部分单调递增的方案数 分析 设 f[i][j] 表示第 i 位选择的值为 j 的方案数,则有 $f[i][j]=\sum_{k=0}^{i-1 阅读全文
posted @ 2021-03-25 13:19 Vagari 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P4155 问在环上最少取多少个区间能完全覆盖环 分析 首先发现是环,先把端点变为2n方便处理,注意离散化 其次要删去贡献不如其他区间,也就是被包含的区间 考虑朴素做法,在删去被包含区间后,若按左端点排序,右端点也必然递增,那么 阅读全文
posted @ 2021-03-25 12:45 Vagari 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3273 大意是给n个初始独立的点,有7种操作: 1、在两个点之间连一条无向边 2、给一个点加上一个权值 3、给一个点所在的连通块中的所有点加上一个权值 4、给所有点加上一个权值 5、查询一个点的权值 6、查询一个点所在的连通 阅读全文
posted @ 2021-03-18 07:33 Vagari 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P3261 分析 考虑对于每个点开堆维护子树中到达这里的所有人的攻击力 对于攻击力改变可以用标记数组给堆打上标记 自下向上合并时,选择较小的堆合并给较大的堆,注意修改每个节点对应的堆编号 当一个值要合并入一个有标记的堆时,直接给 阅读全文
posted @ 2021-03-16 14:28 Vagari 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P5283 大意是选择k个不同的连续区间,使区间异或和的总和最大 分析 求异或和,可以先对前缀异或和建一棵trie树 固定端点在trie中找与之异或值最大的01串,将异或值和以该端点为右端点的异或值排名加入堆 每次从堆中取出最大 阅读全文
posted @ 2021-03-16 14:21 Vagari 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题面 https://www.luogu.com.cn/problem/P1552 分析 容易想到用可维护单调性的数据结构维护一个子树内的可雇佣的最大忍者数量 自下而上对每个节点计算 li/timesnum ,合并子树的线段树 可以用可并堆,但是不想写左偏树,写了比较简单的线段树合并 为了 阅读全文
posted @ 2021-03-15 21:00 Vagari 阅读(87) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示