07 2018 档案
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一个长为n的数组a 让你对于每个长度为m的窗口。 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数。 【题解】 单调队列。 从后往前滑动窗口。 会发现我们维护以这个窗口里面的值为元素的单调队列的时候。 这个单调队列的长度就是最大值更新的次数
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 DP 设f[i][j]表示前i个操作,已经匹配了的点的状态集合为j的方案数 对于+操作 有两种情况。 1.这条边作为匹配的边 2.这条边没有作为匹配边 f[i][j] = f[i 1][j (u,v)] + f[i 1][j]
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你猜到火星的距离x是多少. 已知1y 但是系统有时候会撒谎 这个撒谎的过程由一个长度为n的序列决定 n=n了那么重新从1开始 p数组未知 但是长度n告诉你了 【题解】 前n个问题一直问m 看看系统回答什么,回答0直接输出m,否则根据这个询问来确定系统说
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你n个数字,每个数字可以无限用,每种方案可以组成一个和,问你%k的结果有多少种不同的结果。 【题解】 相当于给你一个方程 然后根据裴蜀定理 设a1,a2,a3......an为n个整数,d
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你两个数组a,b; b数组是1..n的一个排列。 现在给你两种操作: add l,r将a[l..r]都加上1 query l,r 询问 其中a[i]/b[i]是下取整。 n 【题解】 很优秀的题 我们可以在线段
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来。 (直接递增匹配对数 2就可以了 最后栈里面就只剩下类似))))(((((((这样的形式了。 现在就相当于有很多个这种字符串了。 让你把它们拼接在一起。 可以用sort贪
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 第i只动物如果饲养它的话。 代价是固定的就是(n i+1) a[i] 所以相当于给你n个物品,每个物品的重量为(n i+1) a[i],价值为1 背包容量为x 问你最大价值是多少。 但因为价值是单位价值。 所以直接重量小的优先选
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你确定一个最小的k 使得1..k这些比赛的结果能够推导出所有人之间的实力大小 【题解】 如果关系越多。那么就越能确定所有人之间的大小关系。 (多一点也能唯一确定。不嫌多 那么就二分一下k. 做一个拓扑排序。 如果能做唯一的拓扑排序。那么就ok 否则返回
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 给你一棵树。 让你统计其中子树T的数量。 这个子树T要满足最大值和最小值之差小于等于d 树形DP 可以枚举点root为子树的根。 统计以root为根的子树的个数。 根据每个儿子节点选或者不选。 如果选。则看看它是否满足以下条件:
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每一位显然只要取1..60这些数字。 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的。别人不能用 因为如果别人用了的话。gcd就不为1了。 因此我们肯定需要记录这些数字的质因子使用情况。 如果第i个位置枚举
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 给一个森林。 就是由很多棵树组成。。 然后会询问你其中一棵树的最长链。 初始状态的最长链可以用两遍dfs分别找最长路得到。 然后要求你支持合并。 且合并过后。 新的树的最长链尽可能短。 这个合并的过程可以用并查集来表示。 给并查
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 会发现如果x是reallynumber那么x+1也会是reallynumber.... (个位数+1,各位数的和+1了但是整个数也+1了。而且如果发生了进位的话,各个数码的和只会更小。。 因此这个reallynumber肯定有一
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然最多1000行的样子。 从上到小做dp 设f[i][j]为前i行,使用了j个红色方块的方案数。 f[1][r] = 1;如果r 0且g 0则f[1][r 1]=1; 然后如果第i+1行不用红色的话。 就只能用绿色了。。 算算
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 注意这k个序列每个都是排列。 如果在每个序列中都满足y出现在x之后的话。 那么我们从x连一条有向边至y (有一个序列不满足就不连 (这就表明最后的序列中x可以紧接着y 最后显然会形成一个有向无环图。 在这个图上求最长链就好了。
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 原题意等价于:给你一个序列(实数的位置没用!)。。你可以改变其中某些元素的位置(插入到某些位置中间。 然后让他变成有序的。 (有序的话,相同的数字就连在一起了 那么求出原序列的一个最长上升子序列。 把除了这个子序列之外的数字再分
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 先用枚举回文串中点的方法。 得到这个字符串中出现的所有的回文。 得到他们的左端点以及右端点。 整理成一个pair数组 然后排序。 对于每一个回文串。 查找起点比这个回文串的终点大的所有回文串的个数。 【代码】 cpp inclu
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你n个数字 让你删掉最小的数字 使得: 剩余的数字中 "最大的数字"小于等于"最小的数字 2" 【题解】 把数据从小到大排序。 显然只有删掉最小的数字或者最大的数字才可能改变最大数字和最小数字的比例 那么我们枚举最后的结果产生的那一刻最小的数字是什么。
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 首先。 这张图是无向无权图。 因此任意两点之间的最短路可以通过N^2的bfs轻易算出来。 即得到d[N+10][N+10] 考虑s[0] t[0]的最短路以及s[1] t[1]的最短路 如果d[s0][t0] l0或d[s1][
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 二维费用背包。 f[i][j][k] 前i个人,写了j行,bug不超过k的方案数。 可以把每个人看成是一个物品。 它可以无限拿。然后花费为 1行代码和a[i]个bug (拿几个第i个人就相当于v[i]等于几. 就变成一个二维的完
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 考虑r最后的二进制形式为 1xxxxx 那么我们肯定想让第一个最高位的1保留。 因此我们选取的另外一个数字 一定是 0xxxxx的形式。 那么我们贪心地选取数字b=01111..1 然后看看这个数字b是否大于等于L 如果满足,显
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 f[i][j][k]前i个位置,第i个位置放j这个颜色,然后形成了k个联通块的最小花费 分第i个位置有没有已经放颜色两种情况考虑。 如果有放的话。枚举前一个位置的颜色以及前i 1个位置形成的联通块的数目 如果没有放的话。枚举当前
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 很显然只要维护B,R,G的数量就好了。 可以很容易想到一个dfs(int a,int b,int c) 然后如果a+b+c==1,那么让其中为1的对应的颜色标记为可以得到就好 变换就是a 1,b 1,c+1和a 1,c 1,b+
阅读全文