09 2019 档案
摘要:分析 把船当作点 练级当作边 发现一个连通块大于n-1的边的条数的奇偶性影响这个连通块的答案 于是并查集维护即可 代码
阅读全文
摘要:分析 我们发现实际只要计算a[i]>b[j]和a[i]<b[j]哪种多即可 代码
阅读全文
摘要:分析 从大到小考虑每个点 记录一个连通块中选了选了几个 如果选的小于siz则直接选否则不选 代码
阅读全文
摘要:分析 一层一层把叶子去掉 看最多能去掉多少层即可 代码
阅读全文
摘要:分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码
阅读全文
摘要:分析 https://yhx-12243.github.io/OI-transit/records/uoj356%3Bloj2391%3Bac2534.html 代码
阅读全文
摘要:分析 二分答案 判断左上角是否满足 为了覆盖所有范围 我们依次把右下角,左上角,右上角移动到左上角 代码
阅读全文
摘要:分析 我们发现到达一个点一定是先快车再准快车再慢车 于是快车将1-n分为多个区间 每次取出每个区间当前能到达的点的数量 选剩余时间贡献最大的的一个取得贡献并且再能到达的最远点建立准快车 代码
阅读全文
摘要:分析 我们发现改变一个区间实际上只有两个端点的贡献变换 代码
阅读全文
摘要:分析 代码(我的代码是瞎jb水过去的)
阅读全文
摘要:分析 二分倍数 然后考虑dp[i][j]表示选到第i个x轴覆盖到j的情况y轴最多覆盖多少 贡献柿子可以画图然后相似三角形得到 代码
阅读全文
摘要:分析 我们设置三个队列 分别表示没有被切过,切出来的头,切出来的尾 我们不难发现对于每一个队列里的值从头到尾一定递减 于是每次取三个队列队首的最大值即可 代码
阅读全文
摘要:分析 random_shuffle一下 然后每次贪心的把当前点放进最小的组即可 这样做多次即可 代码
阅读全文
摘要:分析 我用的主席树维护qwq 代码
阅读全文
摘要:分析 我们知道答案一定再最小生成树上 于是我们按边权从小到大建立kruskal重构树 然后每次查询lca的值即可 由于询问较多采用st表维护lca 代码
阅读全文
摘要:分析 先求出每个点到终点的最短路 我们按照海拔从大到小排序 然后求出kruskal重构树 每次答案就是一个可行子树中的最短路的最小值 代码
阅读全文
摘要:分析 似乎ttl的模拟赛t3总是折半搜索? 先把所有串转化为每个字母的0/1状态 之后我们将所有字符串分为两半 分别枚举状态 我们发现只有左右两边的字母状态相等才能保证这个集合合法 所以我们在搜左半边的时候每次加入一个pair 表示异或值为x用了y个数 搜完后先将它排序 然后搜右边的时候每次lowe
阅读全文
摘要:分析 先建出最小生成树 之后每次倍增找环即可 代码
阅读全文
摘要:分析 对于第一问我们直接从上到下枚举所有横边 每一次交换两边的列标号即可 对于第二问我们发现答案就是最终序列的逆序对数量 代码
阅读全文
摘要:分析 我们可以先跑一遍全价的最短路 之后我们枚举这个第k大的价格w[i] 将其它边减这个边的权值和0取max 在跑出最短路之后加上减去的费用,即w[i]*k 我们发现如果价值大于w[i]的边小于k个 那么由于小于w[i]的边经过之前操作后权值会比原先大所以一定不有 所以我们不难得出一定是这个点正好是
阅读全文
摘要:分析 它居然真的是个nlog^3暴力?! 两个数在加小于min(lowbit(x),lowbit(y))的数时对他们的奇偶性不影响 因此每次加上min(lowbit(x),lowbit(y))判断此时的奇偶性 直接排序即可 代码
阅读全文
摘要:分析 就是保存前pi-1个数每个ai出现多少次 然后维护这些数当前剩余的最大值 每次和新加进来的比较即可 如果新的大直接取 否则新的最大值一定不大于原来的最大值 因此o(n) 代码
阅读全文
摘要:分析 就是分别维护l和r的个数 然后对于询问区间[L,R] 之后l树状数组中小于等于R的个数减掉r树状数组中小于L的即可 代码
阅读全文
摘要:分析 求满足条件的最大团 我们可以考虑建出补图 发现对于奇数之间和偶数之间 由于一定满足所以补图上一定可以将奇数一组偶数一组建成一个二分图 求二分图最大独立集即可 代码
阅读全文
摘要:分析 对于所有边建Kirchhoff矩阵求出生成树个数 我们发现可能存在有多条边是一个人建得的情况 于是我们考虑容斥 因为数据范围很小所以我们可以枚举所有的不同人的集合 对于每个集合求出方案数 然后容斥即可 代码
阅读全文
摘要:分析 我们发现任取条路径 对于路径外的环一定可以将它完整的取到 而对于和路径有交的环相当于用一段新路径代替原来的一段路径 所以我们只需求出任意一个1到n的路径和图上所有环的值 然后借助线性基求出异或最大值即可 代码
阅读全文
摘要:题目大意 题意狗屁不通 看毛子语都比看这个题面强 分析 我们假设这棵树是一个内向树 那么我们可以轻易的得到dp[x][i]表示x点子树和为i的期望 转移只需枚举当前期望大小和子树期望大小即可 但是由于边的方向不一定 所以这棵树上存在反向边 我们可以容斥有i个边不合法的情况 因此对于一个反向边要么x点
阅读全文
摘要:分析 dp[x][i]表示以x为根的子树有i个黑点的方案数 我们发现每次转移要枚举这个点的子树大小和儿子的子树大小 看似复杂度O(n^3) 但是我们可以把循环转化为枚举x子树内的点再枚举它儿子的子树内的点 发现对于一个点它作为儿子子树的点枚举时最多只会和一个点同时枚举到一次 所以总共n^2组点 所以
阅读全文
摘要:分析 我们发现k非常的小 于是我们对于每一个点暴力维护它到根的所有节点的深度k次方之和即可 每次找到lca然后用之前处理出来的数组加加减减即可 代码
阅读全文
摘要:分析 这是真正的云南oi/px 我们需要考虑保留一段不降子序列 剩余的自由往前往后移动 所以dp一下即可 代码
阅读全文
摘要:分析 g[x][i]表示x点向上i条边的所有关键点都被覆盖的代价 f[x][i]表示x点向下i条边有关键点未被覆盖的代价 转移即可 代码
阅读全文
摘要:分析 TJOI白给题 建出sam,对于每个点如果它的子树siz和等于k 那么对于这个满足的点它有贡献的长度一定是一个连续区间 直接差分即可 代码
阅读全文
摘要:分析 我们发现+1操作就是对于一段连续的1找到它前面最近的0 将这一整段每个数都异或1 我们可以在01trie上走将每一个合法点拿出来打上标记 然后最后依次交换所有标记点的左右儿子即可 我们继续考虑带异或的问题 我们发现我们可以存一下之前的总异或值 然后所有操作前把数跟这个数异或一下即可 代码
阅读全文
摘要:分析 我们发现行列独立 只要分别求出答案然后相乘即可 而对于所有行我们可以将其哈希后变为一行 这样就转化为了1*n的问题 代码
阅读全文
摘要:分析 我们按照w排序 之后2是左括号1是右括号 3既可以是左括号又可以是右括号 然后直接dp即可 我们发现合法的k不会超过sqrt 所以复杂度是对的 对于w相等的情况我们按照种类231排序 代码
阅读全文
摘要:分析 从1~n以此放数 每个数i会产生0~i-1的贡献 dp[i][j]表示前i个数产生j的贡献 前缀和优化一下即可 代码
阅读全文
摘要:分析 我们知道对于一个置换它变回自己需要的次数树$LCM(g_1,g_2..,g_n)$ 有$LCM = \prod p_i^{k_i}$ 因为循环大小为1没有贡献 所以对于该等式的限制即为 $\sum p_i^{k_i} \leq n$ 用$dp_i$表示大小为$i$时的方案数即可 代码
阅读全文
摘要:题目大意 求$\sum_{i=1}^{n} i^k$ 分析 我们发现这是一个$k+1$次多项式 因此我们求出前$k+2$项然后插值即可 由于$x_i = i$ 因此公式里面的乘机可以通过预处理然后循环中乘逆元的方式快速得到 代码
阅读全文
摘要:分析 我们可以建出s串的parent树 然后t串在上面跳着找即可 代码
阅读全文
摘要:https://www.luogu.org/blog/Kesdiael3/hou-zhui-zi-dong-ji-yang-xie 代码
阅读全文
摘要:分析 将m个车拆为n*m个点 相当于将每个车在不同的时段修分成新的车 在第n-i个时段会对之后的车总共造成i*t[i]的贡献 人向车连边然后分别连st即可 代码
阅读全文
摘要:题目大意 给你串s和t 但是每个串都被表示为多个二元组(x,y)表示字符x连续出现y次 问t在s中出现了多少次 分析 我们先将s和t每个串中二元组合并 即相邻两个二元组如果字符相等则将它们变为一个 特判掉m=1的情况 其余情况我们发现对于相等位置除了t的开头结尾两个二元组 其余二元组一定与和s的对应
阅读全文
摘要:题目大意 给你一个串和m个下标 问你一个长度为n的串每一个下标开始的后缀的前缀都包含给定的串的方案数 分析 对于给定的串求出z数组 对于两个串不重叠的情况就是中间都不包含的数随便填即可 对于重叠的情况判断相交部分的左端点的z[i]是否大于等于重叠长度即可 代码
阅读全文
摘要:题目大意 给你一个串 对于一个子串如果它既是前缀又是后缀 输出它的长度以及它在原串中一共出现了多少次 分析 对于既是前缀又是后缀的判断和126B相同 然后我们只需要记录每个不同的z[i]出现了多少次 然后对于每个合法z[i]输出所有大于z[i]的数的出现次数即可 因为如果长度为z[i]的前缀是最长前
阅读全文
摘要:题目大意 给你一个字符串,求它的一个子串使得这个子串即使前缀又是后缀又出现在不是前缀且不是后缀的地方 分析 扩展kmp就是定义z[i]表示i~n的子串与整个串的最长公共前缀的长度是z[i] 所以这个题就是找到一个位置使得z[i]=n-i+1 这样保证了是前缀和后缀 然后再判断之前是否有一个z[j]=
阅读全文

浙公网安备 33010602011771号