摘要:
一道虚树的题。 很明显,要对于每一次询问把相关的点拿出来建立一颗虚树。对于一次询问,使用最短路求解,处理一下堆里的排序规则即可。 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include 阅读全文
摘要:
奇怪的东西,感觉好暴力,难搞。 dp套dp,指把一个dp的dp数组当下标,去进行dp。就挺离谱。 例题:[TJOI2018]游园会 求长度为 n,字符集为 N,O,I,不包含子串 NOI 的字符串中,与给定字符串 S 的 LCS 为 len 的字符串数量。 首先先看怎么求 LCS 。令 B 串为模板 阅读全文
摘要:
比前几天的模拟赛都要简单qwq T1 有一个小技巧,形如 dp[i][j] = dp[i-1][j] + dp[i][j-1] 的式子里,(1,1) 到 (n,m) 的贡献相当于从 (1,1) 走到 (n,m) 的方案数。这样对于两段区间的合并,可以看做左半部分的矩形走到右半部分,可以 \(k^2\ 阅读全文
摘要:
T1 简单的dp就好,比较简单( T2 可以倍长后塞到 tri 树里面进行dp,使用后缀树优化,未掌握的知识点呢( T3 是一窍不通的数学问题,可能和置换之类的有关,不会不会qwq 阅读全文
摘要:
T1 对于同一种假币,可以发现随着取的数量越来越多,单张的贡献是越来越小的。我们将所有假币都只取一张的贡献算出来,放进堆里面。每次取出贡献最大的出来,然后推他的下一层贡献即可。 T2 对于两个点 u->v 。当且仅当u是这条路径上第一个被选中的元素的时候v会被u锤。可以发现期望就是所有路径长度倒数之 阅读全文
摘要:
难搞的题啊……做了一下午 使用到了主席树,AC自动机,根号分治,树状数组等算法及技巧。 可以想到一个比较明显的做法,就是建立出AC自动机,然后将fail树的dfs序处理出来,建立线段树。对于选取的 \(s[l,r]\) 这些字符串,将结束点的子树加一,然后枚举 s[k] 在线段树里面查询答案。 发现 阅读全文
摘要:
T1: 第一题是神仙构造题…… 然而赛时并没有想到如何构造,就给第一个subtask打了一个表输出了。 T2: 可以想到一个nq的做法,使用换根dp可以 \(O(n)\) 的求出答案,按照 dfs 序避免递归可以得到 70pts 。 T3: 把train里面取了前1w个例子存了下来,然后去跟test 阅读全文
摘要:
T1 先处理出一个生成树,将树边删掉,然后判断图是不是一个二分图。 如果不是二分图,则必然存在奇环,由于生成树的存在,即使删掉它们图也仍然联通。 否则的话进行染色,容易找到染成四色的方法。 T2 并不会正解…… 留好空位,询问的时候让返回值显示一些元素。 T3 阅读全文
摘要:
T1 使用根号分治思想,发现我们有一种方法可以快速更新答案,考虑我们新选中一种颜色,找这种颜色相邻的位置有多少个位置的颜色是被选中的,然后再减去被选中颜色出现的次数,即为这次修改操作对于答案的贡献,删除颜色同理可得。 那么我们将出现次数大于 \(\sqrt n\) 的元素拿出来预处理两两相邻对数。 阅读全文
摘要:
神仙题……有整体二分,线段树合并qwq。 首先要将删边改为加边,倒叙处理操作。 我们要使用整体二分处理一条边是在什么时候才让边的两端在同一个强连通分量里。对于每一次solve,我们传入二分的两端和包含需要处理的边的 vector 数组。将在 mid 前出现的边建出一张图,然后在上面跑一遍 tarja 阅读全文