摘要: 简单博弈题。 先说结论,如果存在 \(a_i = 0\) 使得 \(1 \le i \le a_1\) 的话,那么先手必胜,否则后手必胜。 若满足上述条件显然先手必胜,将 \(0\) 搞到第一个就行。否则 Alice 每操作一次,如果操作后满足了上述条件,那么 Bob 赢,否则 Bob 只要不动就行 阅读全文
posted @ 2024-09-17 20:51 KIreteria 阅读(67) 评论(0) 推荐(0)
摘要: 笑点解析:NOIP 模拟赛把这题放在 T3。 因为每一个点只能动一次,答案一定 \(\le n\),所以我们分两种情况讨论: 当答案小于 \(n\) 答案如果小于 \(n\),那么一定有一个点是一直没有被动过的。我们枚举这个点,将无根树转化为两棵以这个点为根的有根树。 我们将第一棵树和第二棵树同构的 阅读全文
posted @ 2024-09-08 23:13 KIreteria 阅读(14) 评论(0) 推荐(0)
摘要: 首先考虑暴力 DP,设 \(f(i,v_1,v_2,now)\) 为已经将前 \(i\) 个数填入,\(i\) 填在 \(v_1\),\(j\) 填在 \(v_2\) 点,已经填完点的状态是 \(now\)(状压一下存在一个 long long 里)的方案数。转移时直接枚举下一个点暴力转移,只需要保 阅读全文
posted @ 2024-08-29 15:51 KIreteria 阅读(26) 评论(0) 推荐(0)
摘要: 从题目名字看出此题需要用动态树解决 对于任意 \(i\),都有唯一的 \(p_i\) 与之对应,由 \(p_i\) 向 \(i\) 连边,\(n\) 种关系显然构成一基环树森林。对于环上的节点,一个点可以自己表示自己,所以可以直接解出该点的权值,其他点从环上的点直接推出即可。 考虑如何动态维护这个过 阅读全文
posted @ 2024-08-18 19:52 KIreteria 阅读(32) 评论(0) 推荐(0)
摘要: 我们肯定是要先求出来一个位置被加的次数,然后和权值乘一下就行。 对于一个位置 \(i\),右端点 \(b\) 肯定是随便选,一共 \(n-i+1\) 种情况。再是对于每一种步长 \(c\),左端点 \(a\) 都有 \(\left\lceil\dfrac{i}{c}\right\rceil\) 种取 阅读全文
posted @ 2024-08-17 21:28 KIreteria 阅读(57) 评论(0) 推荐(0)
摘要: 话说这题真的有紫吗(问号 注意到数据范围中提到 $\sum{nm} \le 2 \times 10^5 $,这里实际上是隐含了 \(\min(n,m) \le \sqrt{2\times 10^5}\) 的。我们考虑根据 \(n\) 和 \(m\) 的大小关系设计出不同的算法。 \(m<n\) 一个 阅读全文
posted @ 2024-08-17 19:48 KIreteria 阅读(67) 评论(0) 推荐(0)
摘要: 可能有不少不严谨之处,太菜了请谅解。 之前对于 \(\text{splay}\) 的复杂度一直不是很懂,今天进行了一个势能分析的学习。 势能分析,就是借助势能函数,将中间过程用势能函数来刻画以得到发杂度的一个上界,这样分析出来的一般是均摊复杂度。 例如,第 \(i\) 此操作的代价是 \(c_i\) 阅读全文
posted @ 2024-08-13 13:52 KIreteria 阅读(111) 评论(0) 推荐(0)
摘要: 切了 D 但不会 C,使我的大脑旋转。 A 进行一个分类讨论。 如果序列是有序的,答案自然为 \(0\)。 如果存在 \(i\) 使得 \(p_i = i\) 且 \(i\) 之前的数全小于 \(i\),那么答案为 \(1\),否则答案显然大于 \(1\)。 如果 \(p_1 \ne n\),那么答 阅读全文
posted @ 2024-08-05 19:33 KIreteria 阅读(45) 评论(0) 推荐(0)
摘要: 区间连边先想到线段树优化建图,但显然的是这样建图求 MST 根本没法做。需要另想他法。 前两天刚做了弹跳,此题并没有直接建图,而是模拟了 Dijkstra 来跑最短路。同理,此题我们也可以不直接建图,而是通过模拟 Kruskal 来求 MST。 将边按照权值从小到大排序,注意到连完边后 \([l,r 阅读全文
posted @ 2024-07-29 16:15 KIreteria 阅读(25) 评论(0) 推荐(0)
摘要: 考虑先贪心中间的回文串 \(b\),因为这即使影响了两边的字符串,也不会改变最终的总串长。所以先使用 manacher 跑出来每个位置的最长回文半径。 在考虑怎样找出最长的 \(a\) 和 \(a'\)。可以二分答案,设此时答案为 \(k\),找出的 \(b\) 串为 \(s[l\dots r]\) 阅读全文
posted @ 2024-07-29 14:53 KIreteria 阅读(23) 评论(0) 推荐(0)
摘要: 题目分析 考虑 DP。 显然当没有 \(i\) 连向 \(i+1\) 的边时,整个图是一个 DAG,可以直接 DP。所以我们 DP 要解决的唯一问题,就是考虑上 \(i\) 到 \(i+1\) 的边。 考虑从 \(n\) 走到 \(1\) 的过程。当我们从 \(i\) 向前跳到 \(j\) 后,此时 阅读全文
posted @ 2024-07-29 14:49 KIreteria 阅读(23) 评论(0) 推荐(0)
摘要: 样例给了我们一个很好的提示。观察样例中 \(1\rightarrow 4\) 的路径,发现 \(4 \rightarrow 5\) 这条边走了两遍,再结合题目描述中不需要保证是简单路径的提示,我们发现: 如果路径两侧分别是 ( \(\rightarrow\) ( 和 ) \(\rightarrow\ 阅读全文
posted @ 2024-06-10 19:26 KIreteria 阅读(67) 评论(0) 推荐(0)
摘要: 比较直接的做法。 当 \(P_x = 1\) 时显然可以暴力 DP,设 \(f_{x,c}\) 表示 \(x\) 的子树中以 \(c\) 开头的最长不下降子序列的长度。直接转移即可。 \(P_x \neq 1\) 的时候呢?我们发现,所谓“忽略掉这些路径中的第 \(2\) 到第 \(P_x\) 个的 阅读全文
posted @ 2024-06-03 22:27 KIreteria 阅读(36) 评论(0) 推荐(0)
摘要: 题目简述 给一棵节点为黑色或白色的树。每次修改一个结点的颜色并询问黑色节点是否构成一条链。 题目思路 我们将一个节点的度数定义为和它相邻的黑点数。 不难发现,黑色节点构成一条链当且仅当她们的度数只是 \(1\) 或 \(2\),且度数为一的只有两个(链的两端节点度数为 \(1\),其余节点是 \(2 阅读全文
posted @ 2024-06-03 22:27 KIreteria 阅读(28) 评论(0) 推荐(0)
摘要: 省流题意 给定一棵基环树,求以每个节点为根时共有多少种不同构的树。 题目分析 如果这是一颗树的话,那么直接树哈希,换根 DP 即可,在此不再赘述,详见板子题。 现在我们需要考虑的是如何将这个环也哈希进来。这时我们发现,环与孩子的唯一区别就是前者有序而后者无序,所以我们只需要采取字符串哈希的形式即可。 阅读全文
posted @ 2024-06-03 22:26 KIreteria 阅读(27) 评论(0) 推荐(0)