ACM题目
青色流苏
zfc
展开
-
Codeforces Round #663 (Div. 2) C
题意:给定一个数n,构造一个数组包含1到n这n个数,其中每一个数ai两侧最近的大于ai的数与ai相连,使这个序列中出现环。问可能的序列多少种。 想到了可以构造最小的环即三个数且两大夹一小,然后通过排列组合计数,但很难或者说不能做出来。其实自己做题时如果能够尽快找到为什么得不出来或许也就能够想到反过来考虑了。其实这个题目做法是先算出全部的排列然后减去不符合条件的(这个好找),不符合条件即严格不会出现两大夹一小情况,由大到小除了最大的数外每个数都可以在最大的数(或者说比它大的数构成的序列)左边或右边,所以.原创 2020-08-10 18:27:51 · 149 阅读 · 0 评论 -
补题:Codeforces Round #659 (Div. 2)
1.Codeforces Round #659 (Div. 2) A 题意:给定一个数组包含n个元素,表示n+1个字符串相邻两个字符串中相同的前缀字符子串长度。求这n+1个字符串。 字符串符合条件即可,可能的情况很多很多,所以尽可能的用的字符种类少点就好。wa了一次,因为考虑少了,想着仅用一种字符实现字符串相邻的前缀子串相同。具体做法就是看某一个字符串和两边相邻相同字符数,包含的字符数要多于两个相邻的字符数。先复制前一个字符串的前几个字符,如果还需要更多的字符,那就换一种字符补齐该有的字符数,而后面的原创 2020-07-26 00:48:52 · 158 阅读 · 0 评论 -
第十五次训练:Educational Codeforces Round 72 (Rated for Div. 2) && Codeforces Round #582 (Div. 3)
1.Educational Codeforces Round 72 (Rated for Div. 2) D 题意: 2.Educational Codeforces Round 72 (Rated for Div. 2) A 题意:玩游戏中有些英雄有各自的力量值和智力值,另外还有些额外的点数,可以选择加到这两个属性中。问有几种不同的加法能够让英雄力量值大于智力值(不能等于)。 开始想着应该从大到小一个一个试就可以,所以超时了。然后就分情况一点一点的讨论做的,结束后搜了一下发现全是二分的,而且这个题原创 2020-07-25 00:47:09 · 159 阅读 · 0 评论 -
第十四次训练:Codeforces Round #587 (Div. 3) && Educational Codeforces Round 73 (Rated for Div. 2)
1.Codeforces Round #587 (Div. 3) D 题意:有n种剑原本有相同的数目,有一些人每人拿了相同件数的某种剑,问最少可能有多少人拿剑。 要人数少,那么就让拿的剑尽量少,每个人拿到的剑数尽量多。要想拿的总剑数最少,就让剩下最多的某种剑数作为原先每种剑数,要想每个人拿的尽量多,就让每个人拿的剑数是所缺少了的剑数目的最大公约数。继而得到最少人数和每个人拿的剑数。 #include<iostream> #include<iomanip> #include<原创 2020-07-24 00:38:11 · 91 阅读 · 0 评论 -
第十三次训练:Codeforces Round #590 (Div. 3)
1.Codeforces Round #590 (Div. 3) C 题意:两行管道,有六种管道,每个管道都可以旋转,问能不能通到右下角。 从左往右通就好了,从纵向看来,每步(每两个管道)只要如果连通上一步的终点的是一个直管道或者这两个都是弯管道就可以通到下一步。直管道下一步位置不变,两个弯管道位置变化,出现其它情况都会终止通道。所以只需要记录当前管道连通位置,并判断下一位置的管道即可。当然,最后还要看下是不是连通的右下角。 #include<iostream> #include<i原创 2020-07-22 00:46:18 · 175 阅读 · 0 评论 -
第十二次训练:Educational Codeforces Round 74 (Rated for Div. 2)
1.Educational Codeforces Round 74 (Rated for Div. 2) F - 不明白,还是放官方代码吧。 #include <bits/stdc++.h> using namespace std; const int N = int(3e5) + 99; int n; vector <int> g[N]; int d[N]; int dp[N][2]; void dfs(int v, int p){ vector <int&g原创 2020-07-21 00:15:33 · 173 阅读 · 0 评论 -
补题:Codeforces Round #656 (Div. 3)
1.Codeforces Round #656 (Div. 3) A 题意:给定三个数,求另三个数,两两比较的大数正好是给定的三个数。 #include<iostream> #include<iomanip> #include<fstream> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> #include<cstring原创 2020-07-19 00:59:11 · 160 阅读 · 0 评论 -
第九次训练
今天训练仍然是整理过的题目,但我做的时候晚了点所以提交的题目也不多。这次做题卡在了求好数的题目上了,这个题目整理题目当天没能自己实现出来,但后来又看了一下过了,但没整理到博客中,我本来信心满满做这个题的,但改了好久测例都没过。 我看过官方题解,也按照那个思路写了好久但没能实现,但后来想了一下,其实我简单版本的代码超时其实都在于求3的n次方上,而其实需要用到的3的幂是连续的,只要用最普通的方法一点一点乘上来就能够省时。 #include<iostream> #include<...原创 2020-07-15 21:43:21 · 87 阅读 · 0 评论 -
第八次训练
- 这次的题目都是之前整理过的。看一眼题目就能知道大约的难度,所以我也就差不多从前往后做的。不过即使整理过的我也没做出多么好的成绩,即使是当时做题时完全自己做出来的题目,看一眼就能想起来当时的做法,我也要话差不多的时间才能把代码实现出来,看到别人做的很快还是挺挫败感的。 当然,这也让我明白了我写代码的能力和别人有多大的差距。代码实现在我这一直是一大难关,而这次训练我也还是让一个题卡住了,就是排雷并带领士兵通过的那个题目: 其实后面还有题目我如果花时间做的话还是可以做出来的,但我却偏要做这个题,原创 2020-07-15 00:32:06 · 106 阅读 · 0 评论 -
第七次训练:Educational Codeforces Round 91 (Rated for Div. 2)
1.Educational Codeforces Round 91 (Rated for Div. 2) A 题意:给定一个数组。问能不能找到三个递增下标,值第二个比另两个大。 说是水题,但我提交了不只一次。因为有个细节想的一样,写出来写成了另一个样。 #include<iostream> #include<iomanip> #include<fstream> #include<cstdlib> #include<algorithm> #in原创 2020-07-14 00:27:34 · 189 阅读 · 0 评论 -
第六次训练:Codeforces Round #595 (Div. 3)
1.Codeforces Round #595 (Div. 3) C1 题意:给定一个数n,求一个不小于n的数,并且这个数能够表示为3的幂的和的形式,并且3每一次幂都只能出现一次。 先按幂从小到大顺序累加3的次方,当大于等于n时看能不能减去一些已经加上的3的幂,以得到最小的值。注意,需要从大往小减,以保证最小。(因为累加x的1、2、3、、、n次方会小于x的n+1次方) #include<iostream> #include<iomanip> #include<fstrea原创 2020-07-11 22:47:38 · 192 阅读 · 0 评论 -
第五次训练:Educational Codeforces Round 75 (Rated for Div. 2)
1.Educational Codeforces Round 75 (Rated for Div. 2) E1 看第七题。 2.Educational Codeforces Round 75 (Rated for Div. 2) C 题意:给定一个数串,只能交换相邻奇偶数,但交换次数不限。求如果把它看作一个多位数能够得到的最小的值(可以有前导零)。 奇数间或者偶数间的顺序不变,只看奇偶数怎样穿插,这个看到这个题的时候还真没想到,这样就只要优先输出小的就可以了。 #include<iostr原创 2020-07-11 00:08:27 · 244 阅读 · 2 评论 -
第四次训练:Educational Codeforces Round 76 (Rated for Div. 2)
1.Educational Codeforces Round 76 (Rated for Div. 2) E 题意:开始时三个人都分到了一些题目,可以进行题目交换,求最小的交换次数,以使得三个人的题目正好按顺序排。 #include<iostream> #include<iomanip> #include<fstream> #include<cstdlib> #include<algorithm> #include<cmath> #i原创 2020-07-10 00:15:23 · 243 阅读 · 1 评论 -
第三次训练:Codeforces Round #598 (Div. 3)
1.Codeforces Round #598 (Div. 3) F 题意:给定两个字符串,每次选择一定长度片段反转(字符顺序倒过来),两个字符串要选同样长度但可以是不同位置,问是否可以使两个字符串相等。 读完题我觉得它最多是C题的难度,没想到又是F。当然,在实际思考一下后发现没那么简单,就先跳过了,不过幸好放弃了,不然又会浪费很长时间。之后琢磨了半天官方题解,发现这个题解的关键就是可以反转的长度是不限的,而我们做的却是选择反转两个(通过两个间的反转间接可以实现任意数目的反转),所以确实,这又像个冒泡原创 2020-07-09 00:53:12 · 141 阅读 · 0 评论 -
第二次训练:Educational Codeforces Round 77 (Rated for Div. 2)
1.Educational Codeforces Round 77 (Rated for Div. 2) F 题意:有n个数代表不同种颜色,每个数都有一定的取值范围。最后求一个总的dis值。看示例的解析应该这些就够了,但关键不明白的就是多出来的这三行,说是这棵树的边,实在不明白干什么用的。连题目都看不懂,搜了半天也没找到有谁解释下这个题,那多出来的n-1行啥意思,就更不会做了。当然,官方题解就是一个秀儿。 2.Educational Codeforces Round 77 (Rated for Di...原创 2020-07-07 23:45:23 · 210 阅读 · 0 评论 -
第一次训练:Codeforces Round #605 (Div. 3)
1.Codeforces Round #605 F You are given two bracket sequences (not necessarily regular) ss and tt consisting only of characters ‘(’ and ‘)’. You want to construct the shortest regular bracket sequence that contains both given bracket sequences as subseq...原创 2020-07-07 00:31:45 · 213 阅读 · 0 评论