上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页
摘要: 题目大意 给你一个串和m个下标 问你一个长度为n的串每一个下标开始的后缀的前缀都包含给定的串的方案数 分析 对于给定的串求出z数组 对于两个串不重叠的情况就是中间都不包含的数随便填即可 对于重叠的情况判断相交部分的左端点的z[i]是否大于等于重叠长度即可 代码 阅读全文
posted @ 2019-09-01 08:58 水题收割者 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个串 对于一个子串如果它既是前缀又是后缀 输出它的长度以及它在原串中一共出现了多少次 分析 对于既是前缀又是后缀的判断和126B相同 然后我们只需要记录每个不同的z[i]出现了多少次 然后对于每个合法z[i]输出所有大于z[i]的数的出现次数即可 因为如果长度为z[i]的前缀是最长前 阅读全文
posted @ 2019-09-01 08:52 水题收割者 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个字符串,求它的一个子串使得这个子串即使前缀又是后缀又出现在不是前缀且不是后缀的地方 分析 扩展kmp就是定义z[i]表示i~n的子串与整个串的最长公共前缀的长度是z[i] 所以这个题就是找到一个位置使得z[i]=n-i+1 这样保证了是前缀和后缀 然后再判断之前是否有一个z[j]= 阅读全文
posted @ 2019-09-01 08:39 水题收割者 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你n个二元组 问你有几种排列是的按两个关键字中的任意一个都不是不降排列的 分析 不妨容斥 我们先加上总的方案数$n!$ 之后我们按第一个关键字排序 因为值相同的情况下不影响答案 所以让总方案数减去$\prod sum_{ai}!$即可 对于第二关键字的情况同上 我们再使序列同时按照第一关 阅读全文
posted @ 2019-08-26 21:41 水题收割者 阅读(205) 评论(0) 推荐(1) 编辑
摘要: 题目大意 给你一个有向图和一个路径 让你在给定路径中选出尽量少的点使得新路径的最短路长度和原路径相等 给定路径相邻两点间距离为1 分析 先floyd求出两点间最短路 之后每次对于点i找到所有跟它的最短路距离=在序列上建个距离的点j 将dp[i]转移到dp[j]即可 代码 阅读全文
posted @ 2019-08-26 21:35 水题收割者 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个n 让你用1~2*n的数填满一个2*n个点的环 使得任意连续的n个位置的和的最大值减最小值不大于1 分析 我们通过瞎jb找规律发现n为偶数吴姐 而n为奇数我们设前n个位置为0组,后n个为1组 则这样填 1-0 2-1 3-1 4-0 5-0 6-1 7-1 8-0 不难看出规律 代 阅读全文
posted @ 2019-08-26 18:48 水题收割者 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你n个序列,每个一行 每个序列是可以左右移动的 对于每一列问在随意左右移动这些序列的情况下 这一列的每个数的和最大是多少 分析 对于每个序列分为两种情况 [1]长度小于长度的一半 我们发现这种情况下一定是两头长度为k的地方只能考虑序列开头/结尾的前k个 于是我们直接维护开头和结尾前k个的 阅读全文
posted @ 2019-08-26 18:42 水题收割者 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个序列s 让你求一个1~n的序列 使得对于第i个位置它前面所有小于p[i]的数的和恰好为s[i] 分析 我们可以从后往前确定每一位 每次一二分找到恰好等于s[i]的数 但是我们发现这样会产生重复选一个点的情况 所以我们改为每次找第一个大于s[i]的点 这个点-1恰好为答案 代码 阅读全文
posted @ 2019-08-26 18:32 水题收割者 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个n 让你用0~n^2-1的数填满一个n*n的正方形 满足每个数值出现一次且每行每列的异或值相等 输出任意一种方案 分析 我们发现对于4*4的正方形 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 是满足条件的 那么如果对正方形中的每一个数都加上一个相同的 阅读全文
posted @ 2019-08-26 18:27 水题收割者 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你n个点的坐标和权值 问先在每一行选一个点再在每一列选一个没选过的点 求最大权值和 分析 可以想到将点转化为边,将两个坐标对应两个点 所以问题转化为选H+W个边 使得所有边的度都不为0 则最终这个图就会变为若干联通块 每个个联通块正好有一个环 我们将边权从大到小排序 然后并查集维护一下联 阅读全文
posted @ 2019-08-26 18:18 水题收割者 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个有n个点的完全图 求一种方案是的给边染色后任何一点不能沿一种颜色的边走奇数条边回到这个点 要求颜色数最少 分析 考场上输出格式打错见祖宗... 我们每次找一个最大二分图将其染一个新颜色即可 找的方式就是每次将一个集合分为左右两边 将这两个集合分别作为左边点和右边点连成二分图 然后递 阅读全文
posted @ 2019-08-26 17:28 水题收割者 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 先吐槽一下这个比赛的奇怪名字 这个破名字让我实在不知道博客标题该叫啥/px 题目大意 给你一个长度为2n的序列 包括W和B 每次可以选一个区间将里面的颜色反转 但是每个点只能被作为端点选一次 问将序列全部变为W的操作方案数 分析 可以将区间左右端点看作左括号与右括号 我们发现对于W一定被偶数个区间覆 阅读全文
posted @ 2019-08-26 17:13 水题收割者 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 分析 就就就是推柿子 看官方题解吧/px 代码 阅读全文
posted @ 2019-08-26 16:39 水题收割者 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 分析 我们不难发现对于偶数的情况只要相邻两个数不相等即可 而对于奇数的情况只要中间恰好隔一个数的两个数不相等即可 于是我们又dp[i][0/1]表示考虑到第i位,这一位和它后面离它最近的一个确定的数是否相等 每次从i-1转移即可 注意对于奇数的情况最终答案要n-1和n的dp值相乘以保证合法 代码 阅读全文
posted @ 2019-08-26 16:37 水题收割者 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 分析 每次修改用二位差分记录一下 之后对于三维分别统计即可 代码 阅读全文
posted @ 2019-08-26 16:29 水题收割者 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 分析 我们将没连的点连向周围四个点 其余的按照给定的方向连 我们将所有连出去的位置统一连到0点上 再以0作为树根 于是就将问题转化为了有向图内向树计数 代码 阅读全文
posted @ 2019-08-26 16:26 水题收割者 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 分析 此题难点在于一些最小生成树的性质 可以参考这里 https://www.cnblogs.com/Y-E-T-I/p/8462255.html 代码 阅读全文
posted @ 2019-08-26 16:22 水题收割者 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 分析 [1]无向图 图G的度数矩阵为D,邻接矩阵为A 我们定义这个图的Kirchhoff矩阵为D-A 这个矩阵的任意一个n-1阶主子式的行列式的绝对值就是这个图的生成树个数 [2]有向图 如果要求内向树计数,矩阵是 出度矩阵-邻接矩阵如果要求外向树计数,矩阵是 入度矩阵-邻接矩阵注意有向树计数的时候 阅读全文
posted @ 2019-08-26 16:20 水题收割者 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 分析 傻子题? 对d取模后随便贪心即可 代码 阅读全文
posted @ 2019-08-24 19:42 水题收割者 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 分析 树上从下往上线性基合并即可 并不需要启发式/xyx 代码 阅读全文
posted @ 2019-08-24 19:39 水题收割者 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 分析 不难想到dp[i][j]表示前i个数分了j组的最大值 我们发现这个dp状态有决策单调性 g[i][j]表示对于第i个数它的第j位最近出现的位置 每次一定从这些点转移 预处理即可 似乎还可以做到1e5 https://www.cnblogs.com/hanyuweining/p/10321914 阅读全文
posted @ 2019-08-24 19:37 水题收割者 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 分析 我们对于每一个点记录他所在的这一行以它为右端点向前最多有几个连续的1 之后我们考虑每一列 对每一列的点按照之前求出的值从小到大排序 一次考虑每一个宽度 而高度也可以很容易的求出 每次取最大值即可 代码 阅读全文
posted @ 2019-08-24 19:32 水题收割者 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 分析 对于每一个点只要维护它前面/后面的一小一大组合的数量 对于这个可以维护两个树状数组 然后从前往后/从后往前分别扫一遍相乘即可 代码 阅读全文
posted @ 2019-08-24 19:25 水题收割者 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 分析 我们发现如果行的异或和等于列的异或和那么对于n-1行m-1列的所有数的选择都是任意的 因为一定可以在它的行末/列末选一个合适的数是的整体满足 但是我们发现对于右下角那一个数是否满足存疑 我们设矩阵为 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 阅读全文
posted @ 2019-08-24 19:22 水题收割者 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 分析 预处理出所有合法数字 然后直接lower_bound查询即可 代码 阅读全文
posted @ 2019-08-24 19:08 水题收割者 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 分析 用map维护一下每种字符串当前有几个即可 代码 阅读全文
posted @ 2019-08-24 19:07 水题收割者 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 分析 我们发现可以把题目转化为:有一个序列a,问它的排列中相邻两个值异或的最大值的最小值 我们发现序列的构成一定是前几位全是一样的 从某一位开始左面全是0右面全是1 所以只要找到一种方案是的交界两个值异或最小即可 把是0的插入01trie,每次拿是1的查询异或最小值 代码 阅读全文
posted @ 2019-08-24 19:05 水题收割者 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 分析 我们发现可以按照ai从小到大排序 边的大小就是当前的a减去前面第一个不等于它的a 代码 阅读全文
posted @ 2019-08-24 19:01 水题收割者 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目大意 你开始有一个序列x 它所有项都是0 你有一个操作:x[i]=x[i-1]+1 问你至少几次操作可以让x序列变为给定的a序列 分析 老年人完全不会这种脑子题/kk........ 我们定义b[i]=i-a[i] 所以对于一个连续的上升子序列它的b是相等的 每次取一段想的b序列中最大的a[i] 阅读全文
posted @ 2019-08-20 18:49 水题收割者 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给你一个1~n的排列 你有两个操作:将一个数移到最后或将一个数移到最前 问将排列排序最少要几次操作 分析 年纪大了,脑子不行了.. 实际我们只需求出对与一段连续的数它在排列中已经有序的最长长度即可 剩下的数暴力放到最前/最后即可 代码 阅读全文
posted @ 2019-08-20 18:39 水题收割者 阅读(176) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页