弱省互测#0 t3】的更多相关文章

Case 1 题意 要求给出下面代码的答案然后构造输入. 给一个图, n 个点 m 条边 q 次询问,输出所有点对之间最大权值最小的路径. 题解 把每一个询问的输出看成一条边,建一棵最小生成树. Case 3 题意 给输出,要求构造输入使得用所给代码运行后得到的输出和给出的输出相同. 所给代码:n 次 Dijkstra 求两点间最短路 分析 考虑一下贪心. 题解 首先还是把每一条最短路的询问结果看成一条边,然后我们把这些边排序. 对于每一条边,如果这两个点现在的距离大于这条边的权值,我们就把这条…
题意 给出\(n\)个01字节和\(m\)个01字节,要求用后者去匹配前者,两个串能匹配当且仅当除了每个字节末位不同,其他位都要相同.问匹配后者至少有多少个末位不同.(\(1 \le m \le n \le 2.5 \times 10^5\)) 分析 首先我们可以用kmp计算出能匹配的位置,然后单独考虑末位不同的情况. 题解 我们将末尾的位提取出来,则考虑\(n\)个\(01\)位和\(m\)个\(01\)位.对于模板串的\(01\)位,我们需要计算以这个位置结束与匹配串位相同的数目,发现其实我…
题意 给出一棵n个点的树,求包含1号点的第k小的连通块权值和.(\(n<=10^5\)) 分析 k小一般考虑堆... 题解 堆中关键字为\(s(x)+min(a)\),其中\(s(x)\)表示\(x\)状态的权值和,\(min(a)\)表示\(x\)状态相邻的不在\(x\)里的的点的最小权值. 每一次从堆中弹出最小的,然后用这个来拓展. 可以证明,这样第\(k\)次弹出来的状态\(x \cup \\{ a \\}\)就是\(k\)小的. 证明很简单,堆中的都是待拓展状态,每一次取出来\(x \c…
题意 给定两个字符串 A 和 B,求下面四个问题的答案: 1.在 A 的子串中,不是 B 的子串的字符串的数量. 2.在 A 的子串中,不是 B 的子序列的字符串的数量. 3.在 A 的子序列中,不是 B 的子串的字符串的数量. 4.在 A 的子序列中,不是 B 的子序列的字符串的数量. 其中子串是指本质不同的子串,不同的位置相同的串也只算一个串 |S|<=2000 分析 构造俩自动机然后同时跑 题解 构造一个子序列自动机,再构造一个后缀自动机,然后从根依次转移,记录状态上的信息,记忆化一下.…
题意 给一个\(N \times M\)的01网格,1不能走,从起点\((1, 1)\)走到\((N, M)\),每次只能向下或向右走一格,问两条不相交的路径的方案数.(n, m<=1000) 分析 先考虑一条,再考虑去掉相交的情况. 题解 令\(d(a, b, c, d)\)表示从\((a, b)\)走到\((c, d)\)一条路径的方案数,则可以简单得到答案: \[Ans = d(2, 1, n, m-1) + d(1, 2, n-1, m) - T\] 我们来考虑任意两条相交路径. 令\(…
Description 给定一颗 \(n\) 个点的树,带边权. 你可以选出一个包含 \(1\) 顶点的连通块,连通块的权值为连接块内这些点的边权和. 求一种选法,使得这个选法的权值是所有选法中第 \(k\) 小的.如果不存在第 \(k\) 小的那输出最大的. 答案对 \(998244353\) 取模. Hint \(1\le n,k\le 10^5\) \(\text{边权} \in (0, 10^9]\) Solution 考虑一个现有的选法,我们考虑如何得到一个新的 尽量小的更大的 选法.…
题意 给两个树,大小分别为n和m,现在两棵树各选一些点(包括1),使得这棵树以1号点为根同构(同构就是每个点的孩子数目相同),求最大的同构树.(n, m<=500) 分析 我们从两棵树中各取出一个点,考虑以这两个点为根能得到的最大同构数. 题解 容易得到: 设\(d(i, j)\)表示第一棵树选\(i\)号点,第二棵树选\(j\)号点所能得到的最大同构数. 那么\(d(i, j)\)就是等于从\(i\)这个点的子树选一些点,从\(j\)这个点的子树选一些点,选出的点数目相同,一一匹配,则答案就是…
#2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作的有效区间是连续的,考虑找到操作x结束的时间ed[x],即执行(x,ed[x]]可以将x加入的数全部弹出,这样用一个vis记录数字次数就可以维护个数: 一种比较暴力的做法是:枚举x,用一个线段树维护还可以放多少个元素,枚举ed[x]更新,但是这样不满足单调性无法two-pointers; 考虑分块.…
题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在最后面加一堆$a_i=c_i=\infty$的石子,确保每次取石子都可以取满$k$个: 先考虑$a_i=0$的情况: 设$f_{i,j}$表示只考虑第0到$i$堆石子,通关前$j$轮的最少操作次数: 设$g_{i,j}$表示只考虑第0到$i$堆石子,前$j$轮结束后再取若干次石子,每次取$k$个,使…
题面传送门 & 加强版题面传送门 竟然能独立做出 jxd 互测的题(及其加强版),震撼震撼(((故写题解以祭之 首先由于 \(a_1,a_2,\cdots,a_n\) 互不相同,故可以考虑求出所有集合 \(S=\{a_1,a_2,\cdots,a_n\}\) 的权值之和,然后答案乘上 \(n!\). 那么怎么求这个权值之和呢?首先有一个非常 naive 的 DP,\(dp_{i,j}\) 表示 \(1\sim i\) 中选了 \(j\) 个数,可得的集合的权值之和,那么显然有 \(dp_{i,j…