![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cf题解
Top_xiao
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 82 (Rated for Div. 2) E Erase Subsequences
题目链接 题意: 给定字符串 s 和 t ,问能否用至多两个 s 的非重叠子序列相加构造出 t 思路: 首先把 t 串分成两个小串, t1 和 t2 然后 dp[i][j] 代表 t1 的 i 位置, t2 串的 j 位置, 匹配 s 串的最短长度。 那么 if (i && dp[i-1][j] < n) dp[i][j] = min(dp[i][j], nx[dp[i-1]...原创 2020-02-23 23:23:48 · 161 阅读 · 0 评论 -
SDU-ACM 2020 Winter Camp Day1
题目链接 A Codeforces Round #457 (Div. 2) C. Jamie and Interesting Graph 题意: 给你 n, m, 让你构造一个图出来,n 个点, m 条边,每条边有权重。 没有重边,没有自环。 且从 1 号点到 n 号点最短路的长度是素数。这个图组成的最小生成树的权重和也是素数。 思路: 先挑一个素数 x 出来, x 大于等于 n, 然后我们先...原创 2020-02-10 23:41:13 · 174 阅读 · 0 评论 -
Codeforces Round #355 (Div. 2)
link D Vanya and Treasure 题意: n*m的格子,一开始再(1,1)的位置,每个位置都有一个宝箱,每个宝箱都有一个编号,编号为x的宝箱可以被编号为x-1的宝箱里的钥匙打开,1号宝箱没有锁,问打开p号宝箱最少走多少步 思路: 很显然, 由于 x 只能打开 x+1 的, 所以我们很容易的就想到了暴力 dp, 但是如果 x 的个数, x + 1 的个数乘起来很大的话, 那么我们就...原创 2020-02-04 12:08:32 · 104 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2)
题目链接 D. Same GCDs 题意: You are given two integers a and m. Calculate the number of integers x such that 0≤x<m and gcd(a,m)=gcd(a+x,m). 思路: gcd(a,m) = gcd(a+x, m) so if gcd(a, m) = k then gcd(a,m) /...原创 2020-01-31 19:51:48 · 103 阅读 · 0 评论 -
Educational Codeforces Round 80 (Rated for Div. 2) D. Minimax Problem
题目链接 题目意思: n*m的数组, 选取两行,两行合并成一行,取对应位置上的最大值,然后再取这行的最小值。使这个最小值最大,问这两行的行号。 每行的数字最多八个, 思路: 看到每行最多八个数, 就要想到二进制位优化。 首先要二分出来最大的数 x , 对于这个数,我们进行check。 然后对于每一行, 这一行中如果大于 x, 就设为1, 否则就设为 0, 这样每行就可以组成一个数 y 。vis[...原创 2020-01-26 20:03:28 · 131 阅读 · 0 评论 -
Codeforces Round #605 (Div. 3) E. Nearest Opposite Parity
题目链接 题意: N 个数, 每个数a[i], 从 i 这个位置 只可以走到 i + a[i], i - a[i], 前提是走到的位置在 1 - n 之间, 问从 i 这个位置最少走几步走到j,a[i] 和 a[j] 的奇偶不一样 思路: 我一开始的思路就是用记忆化搜索, f 数组代表当前位 i 的答案, 如果搜到了 j 这个位置 且 j 这个位置的 f[j] 有值, 那么就直接返回就可以了, 但...原创 2020-01-24 13:47:05 · 185 阅读 · 0 评论 -
Educational Codeforces Round 78 (Rated for Div. 2) D. Segment Tree
题目链接 题意: n 个点, 每个点有一个区间,任意两个区间的值都不一样, 值从 1 - 2*n, 如果两个区间有交,那么代表这两个点有边,问这n个点是不是一棵树 思路: 刚看完题就会有一个简单的思路: 那就是先排序, 然后判断两个点的区间是不是交, 如果是交的话那么就用 并查集 并起来。 简单的思路就是这样, 但是实现起来的时候,时间复杂度会很大, 所以我们要想一种优化的方法,优化时间复杂度。 ...原创 2020-01-22 21:32:37 · 216 阅读 · 0 评论 -
Codeforces Round #352 (Div. 2)
C. Recycling Bottles 题意: 在网格上有n个瓶子,现在有两个人A和B,他们有自己的起始位置,还有一个垃圾桶的位置,求捡完瓶子之后两个人走的最短距离是多少。捡瓶子的步骤是:先去捡瓶子,然后扔到垃圾桶。 思路: 我们先假设把所有的瓶子都捡了,记录一个答案 ans, 代表要走多少路, 然后我们找出来从 A 的出发点走会减少多少距离, 从 B 的出发点走会减少多少距离。 所以我们只需要...原创 2020-01-20 20:02:23 · 139 阅读 · 0 评论 -
Hello 2020 D. New Year and Conference
题目链接 题意: 有 n 个事件,在 A 会议室开会的时间段是 abegin aend, 在 B 会议室开会的时间段是bbegin bend。 现在的要求是在 A 会议室中任意事件相交,那么在 B 会议室中这些事件也要相交, 同理,在 B 会议室中任意事件相交,那么在 A 会议室中这些事件也要相交, 如果满足条件 输出 YES , 否则输出 NO。 思路: 对于所有的事件, 我们按照在 A 会议室...原创 2020-01-20 15:58:22 · 143 阅读 · 0 评论 -
Codeforces Round #613 (Div. 2) D. Dr. Evil Underscores
题意: 给你一些数, 找一个数x, 使得与所有数的亦或最大的那个值 最小 x 思路: 亦或的话, 肯定是位数是从大到小来枚举, 如果所有的数中,当前位上的值是一样的,那么 x 在这个位上就一定是 0, 如果这个位既有0也有1, 那么就要分两种情况来考虑,填 1 会怎么样, 填 0 会怎么样,然后把数分成两拨,一波是当前位是1 的, 一波是当前位是0的。 然后不断递归下去。 所以dfs 转移的时候...原创 2020-01-18 18:25:31 · 136 阅读 · 0 评论 -
Codeforces Round #612 (Div. 2) B. Numbers on Tree
题意: 给你一棵树, 还原树上每个节点的价值, 首先树上的每个节点都有一个数,代表这个节点子树中有多少个节点的价值小于当前节点。 思路: 对于每一个节点,我们维护一个数组,然后数组中的值就是当前节点和当前节点子树的编号, 然后数组中的下标就代表每个节点的价值。 dfs 回溯之后,我们就可以知道当前节点插入到数组的哪一个位置。 对于怎么维护一个数组, 我们就可以用 vector 。vector 支...原创 2020-01-18 17:29:41 · 122 阅读 · 0 评论 -
Codeforces Round #350 (Div. 2) F. Restore a Number
题意: 小明写了一个大数字 n ,然后再这个数字后面又加了一个数字 k , k 是 n 的位数 现在小明把完整的数字传给了小红, 但是在传输的过程中出现了意外,小红收到的数字的内容是打乱的, 现在知道的是小明还记得 大数字 n 的一部分,也就是他的字串,让你还原这个数字 n, 且让这个数字 n 尽可能的小。 记住,不能又前导零, 一个单个的 零 是允许的。 输入是小红收到的数 还有小明记住的数 思...原创 2020-01-14 11:39:40 · 102 阅读 · 0 评论 -
Codeforces Round #567 (Div. 2)
A. Chunga-Changa 简单题 B. Split a Number 题意: 给你一串数字,要你把这串数字分成两部分,然后把两部分加起来的和最少。 要分成的两部分有一个原则, 就是分成的两部分不能有前导零。 思路: 一个大体的思路肯定就是把串分成相同长度的两个串,这样才能最小。 所以就找中间位置就可以了。 如果中间位置上是0, 那就向前或者向后找第一个不为零的位置。 C. Flag 题意:...原创 2020-01-12 15:41:49 · 132 阅读 · 0 评论 -
Codeforces Round #375 (Div. 2) E. One-Way Reform (并查集,欧拉回路)
题意翻译 给出一个n个点m条边的无向图,你需要给每条边定向,使得有尽量多的点,入度等于出度,并构造方案 一共有t组数据 t, n <= 200 思路: 题目给的无向图,没有重边,自环,但是他有可能不是一个连通图,所以我们要用到并查集来做,分成一个一个的小块。 然后每个小块我们加上一些边,使得这个小块可以跑欧拉回路。然后输出边的时候我们要注意把那些我们手动加入的边去掉就可以了。 存...原创 2019-07-11 13:17:50 · 117 阅读 · 0 评论 -
VK Cup 2012 Finals, Practice Session C. Trails and Glades (欧拉回路,并查集)
题目描述 给定一个n个点,m条边的无向图, 可能有重边和自环, 求最少添加几条边,使得图中所有边都在从1出发的欧拉回路上。 注意点: 1、这个题强制了从 1 开始走 2、要走题目中给的所有边 3、孤立的点可以不走,如果有自环的话一定要走 4、无论什么情况,1 这个点一定要走, 思路: 这个题我用了并查集来做。然后就是分类讨论了。 并查集首先求出来有多少个联通块,这个时...原创 2019-07-11 00:18:50 · 164 阅读 · 0 评论 -
Codeforces Round #556 (Div. 2) (A - E题解)
A.Stock Arbitraging 贪心选最小最大就可以了。 B. Tiling Challenge 模拟暴力就可以了。 C. Prefix Sum Primes 这个题因为只有 1 和 2, 所以我们贪心一下,如果加 1 是质数的话,那么就加 1, 否则优先使用 2. D.Three Religions 首先预处理出来一个 idx 数组,代表从 i 这个位置开始,字母 c...原创 2019-05-29 16:29:00 · 189 阅读 · 0 评论 -
Codeforces Round #562 (Div. 2) (C - E )题解
C. Increasing by Modulo 这个题是 一个 二分答案题。 首先我们二分一个值出来,然后 check, 关键是如何 check。 我们首先假定最小的一个值 是 0, 然后遍历一遍数组,把数组上的值在允许的范围内尽量改小就好, 如果最后满足题目要求,那么这个二分的数就是满足条件的。 #include<bits/stdc++.h> using nam...原创 2019-05-30 20:32:37 · 258 阅读 · 0 评论