![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
BrilliantWilliam
一个专注于A题的菜鸟
展开
-
Codeforces Problem-1591C Minimize Distance
Codeforces Problem-1591C Minimize Distance题目链接基本思想: 这道题题目意思很清楚,一共有n个东西要送往n个目的地,一次最多拿k个物品,问最短的路程是多少。从算法的角度来说,一个极限的贪心思想(吓洗了904ms,差点TLE)。a数组记录目的地的远近(排个序),b数组记录总路程。对于负数来说,某种意义上可以把它转换为正数,在记录总里程的时候将a数组内容取反就行。总的路程数就是最远的里程加上二倍的其他里程。AC代码:#include <bits/原创 2021-12-13 10:02:26 · 321 阅读 · 0 评论 -
Codeforces Problem-1591B Array Eversion
Codeforces Problem-1591B Array Eversion题目链接基本思想: 本题的大意是说给一个数组,每次从最后一个数开始,比它小的放在它前面,比它大的放在它后面,统计操作的次数。当数组不再变化时,结束统计,问需要多少次操作。比较直接的一个想法就是寻找数组中最大的元素,每一次操作都会使数组的最后一位变化,直到变为最大值为止,所以实际上就是统计从最后一个数开始,最大数的位置在哪儿。AC代码:#include <bits/stdc++.h>#define l原创 2021-12-13 09:17:53 · 118 阅读 · 0 评论 -
Codeforces Problem-1591A Life of a Flower
Codeforces Problem-1591A Life of a Flower题目链接基本思想: 题目意思比较清楚,就是说在第i天浇水,花就长高1cm;连续两天浇水,则长高5cm;连续两天不浇水,花就无了。问n天之后花的高度是多少。这个题暴力模拟就行,这里面单独判一下第一天是否浇水即可,其他的用f和a[i]进行判断,需要注意的是,花的初始高度为1cm。AC代码:#include <bits/stdc++.h>using namespace std;int main()原创 2021-12-13 09:09:16 · 345 阅读 · 0 评论 -
Codeforces Problem-4C Registration system
Codeforces Problem-4C Registration system基本思想: 这道题需要判断已记录的字符串有没有重复,若没有则输出OK,否则输出该字符串并在末尾加上一个数。我使用了map容器解决这道题,一方面可以存入字符串,另一方面也可以统计字符串出现的频度,输出的时候也很方便。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; map<string,int>原创 2021-11-30 19:04:41 · 445 阅读 · 0 评论 -
Codeforces Problem-25A IQ Test
Codeforces Problem-25A IQ Test 从今天开始的日常题目(实时比赛题目除外)CF分数都在1200以上,本人要尽快摆脱newbie的头衔,正式进入“小学生级别”中,如果这些题目有更好的解决方法或者算法,或是有哪些理解不对的地方,还请各路大神指出!基本思想: 这可以算是1200+级别的水题了。其实只需要判断每个数的奇偶性,把不一样的那个数的下标输出就行。本人开始的时候想着用个map容器或者开个数组解决,但实际上不需要这么麻烦:找一个基准,比如说单独统计偶数的个数,如果偶原创 2021-11-28 10:23:37 · 181 阅读 · 0 评论 -
Codeforces Problem-1610B Kalindrome Array
Codeforces Problem-1610B Kalindrome Array题目链接基本思想: 这道题题意理解不困难,主要说说想法。首先,当n=1或n=2时,一定满足题意;其次,当原数组是回文的,那也一定满足要求。需要注意的是,题目说可以删除数组中值为x的任何的个数,所以为了方便起见,就都删掉就行,这样也一定满足题目要求。 我们可以设两个指针,分别指向数组开始和结尾,一位一位的进行比较。从左向右看,相当于比较a[i]和a[j]大小是否相等以及是否等于当前要删除的数,将这一步的结果记录下原创 2021-11-24 15:10:39 · 996 阅读 · 0 评论 -
Codeforces Problem-1610A Anti Light‘s Cell Guessing
Codeforces Problem-1610A Anti Light’s Cell Guessing题目链接基本思想: 这个题表面上很复杂,理解起来很困难,实际上就是一个题意理解的问题。这个题想要求的是给定一个点(x,y),问最少需要确定几个点,就可以利用曼哈顿距离公式算出其他的点。 先明确一点:设计一个二维平面,其原点为(1,1),这点很重要,因为当这个点是原点的时候,答案为0;当这个点在x=1或者y=1上时,只需确定一个点即可用上面的曼哈顿公式算出从这个点到原点的所有顶点,即答案为1,原创 2021-11-24 09:08:24 · 156 阅读 · 0 评论 -
Codeforces Problem-479A Expression
Codeforces Problem-479A Expression基本思想: 本题想法很简单,将所有情况列出来,找出最大值即可。在这里我用数组存储,一共5种可能的结果,开一个ans[5],将a+b+c、a*(b+c)、(a+b)c、abc、a+bc存入,输出其最大值。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int a,b,c; cin>>a>>b>>原创 2021-11-22 16:54:19 · 428 阅读 · 0 评论 -
Codeforces Problem-580A Kefa and First Steps
Codeforces Problem-580A Kefa and First Steps基本思想: 作为一个A题,其实没有必要考虑它的核心算法,能用暴力做出来是最直接的;但是现在做题不是用来刷数量的,而是找到不同的方法,以掌握算法为主。这道题的标签是dp,那就用dp的思想做一下。这里的dp[i]是指第i个元素之前,最长非递减子序列的长度,即dp[0]=1,后面的每一个元素都与前一个元素进行比较,如果大于或者等于前一个元素,dp[i]=dp[i-1]+1;否则,dp[i]=1。最后再找出dp数组的最原创 2021-11-15 11:43:19 · 574 阅读 · 0 评论 -
Codeforces Problem-1605B Reverse Sort
Codeforces Problem-1605B Reverse Sort题目链接基本思想: 题目的意思在这里就不进行翻译了,直接讲讲算法。通过底下的提示,可以看出来m只有0或1两个选项,在进行交换的时候,我们可以一次性选中要交换的位置,所以m最大为1,而m=0只有在排序过后的字符串和原字符串相等时才满足。 样例一中,由于字符串已经是有序的,所以输出为0; 当m=1的时候,我们可以拿排好序的字符串与原字符串进行比较,如果不相同,k++,同时将下标位置(i+1),最后按照要求输出即可。原创 2021-11-13 14:36:56 · 1197 阅读 · 0 评论 -
Codeforces Problem-1605A A.M. Deviation
Codeforces Problem-1605A A.M. Deviation题目链接基本思想: 本题看起来很长,实则又是道小水题。不难看出,这道题的答案不是1就是0,因为这三个数再怎么变,他们的总和是一定的。这道题的基本想法其实就是看三个数之和能否被3整除,若可以则输出0,否则输出1。 1.先来说一下0的情况:a1+a3=2*a2,这个式子很特殊,如果三个数之和能被3整除,则一定可以将原来的三个数变成一个连续的序列,这样算出来结果一定为0; 2.同理,如果三个数之和不能被3整除,最后原创 2021-11-13 14:08:08 · 1022 阅读 · 0 评论 -
Codeforces Problem-158B Taxi
Codeforces Problem-158B Taxi基本思想: 本题是一道思维题,主要说一下这个贪心算法: 假设人数为1的有w组、人数为2的有x组、人数为3的有y组、人数为4的有z组。 1. 当人数为4,直接ans++,即ans=z; 2. 当人数为3,ans++,如果这时候有人数为1的,顺带把1也带上,即y–,再判断w是否大于0,若成立则w–; 3. 当人数为2,ans+=x/2,然后判断一下有无剩余的,若有,则把人数为1的带上,这里强调一下,如果w<0也没关系,因为原创 2021-11-12 16:11:40 · 264 阅读 · 0 评论 -
Codeforces Problem-705A Hulk
Codeforces Problem-705A Hulk基本思想: 这是一道小小的思维题,需要循环输出“I hate”和“I love”这两个字符串,在两个字符串间用“that”隔开,最后在输出“it”。 本人的做法是:考虑到“I love”前一定有一个“that”,于是我将“that I love”一起存,只要不是“I hate it”的输出(n=1),在每个“I hate”之前都要加一个“that”,这样就可以得到结果。AC代码:#include <bits/stdc++.h&原创 2021-11-11 13:05:13 · 425 阅读 · 0 评论 -
Codeforces Problem-200B Drinks
Codeforces Problem-200B Drinks基本思想: 一道小水题,本意是求n个数的平均数,注意一下精度就可以通过。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; double sum=0.0; int a[105]; cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; sum+=a[原创 2021-11-10 17:40:48 · 373 阅读 · 0 评论 -
Codeforces Problem-61A Ultra-Fast Mathematician
Codeforces Problem-61A Ultra-Fast Mathematician基本思想: 这是一道简单的二进制加法题,没有进位,二进制加法符合原则:0+0=0;0+1=1;1+0=0;1+1=0。按照这个原则进行相加即可得到最终结果。注意:若用string容器的话,可能会Runtime Error,所以建议使用字符数组进行存储。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ str原创 2021-11-09 19:41:27 · 89 阅读 · 0 评论 -
Codeforces Problem-486A Calculating Function
Codeforces Problem-486A Calculating Function基本思想:本题是一道思维题,对于数列-1,2,-3…这个数列而言,不难看出: · 当n为偶数时,f(2)=1,f(4)=2,f(6)=3,f(8)=4…可得通项公式为:f(n)=n/2; · 当n为奇数时,f(1)=-1,f(3)=-2,f(5)=-3,f(7)=-4…可得通项公式为:f(n)=-(n/2+1)。AC代码:#include <bits/stdc++.h>#define原创 2021-11-08 18:48:55 · 106 阅读 · 0 评论 -
Codeforces Problem-318A Even Odds
Codeforces Problem-318A Even Odds基本思想: 本题大意很简单,考虑到n与k的范围很大,如果开数组或者vector容器可能会出问题(Memory Limit Exceeded),所以这道题的本质是找规律。当n为偶数时,数列为1、3、5…n-1、2、4、6…n,显然,若k≤n/2时,第k个数为2k-1;否则,第k个数为2(k-n/2)。当n为奇数时,数列为1、3、5…n、2、4、6…n-1,显然,若k≤n/2+1时,第k个数为2k-1;否则,第k个数为2(k-n原创 2021-11-05 21:54:32 · 155 阅读 · 0 评论 -
Codeforces Problem-1030A In Search of an Easy Problem
Codeforces Problem-1030A In Search of an Easy ProblemAC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; bool f=false; cin>>n; for (int i=1;i<=n;i++) { int z; cin>>z; if (z==1) f=true; } cout<&原创 2021-11-04 11:58:24 · 141 阅读 · 0 评论 -
Codeforces Problem-344A Magnets
Codeforces Problem-344A Magnets基本思想: 本题的任务是要统计磁铁的数量,即遇到前后不同的磁铁时,计数器cnt++,最后将答案输出即可。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int a[200005]; memset(a,0,sizeof(a)); for (int i=0;i<...原创 2021-11-03 22:03:50 · 134 阅读 · 0 评论 -
Codeforces Problem-136A Presents
Codeforces Problem-136A Presents基本思想: 本题是一道礼物交换的问题,相当于给出一组数代表第i个人要将礼物送给第a[i]个人,可以用一个数组b[n]维护,也可以定义一个map容器记录信息,按照map容器的默认排序规则进行存储,二者的效果是一样的。最后再将结果输出即可。AC代码:#include <bits/stdc++.h> //用数组实现using namespace std;int main(){ int n; cin>>原创 2021-11-02 19:15:38 · 198 阅读 · 0 评论 -
Codeforces Problem-133A HQ9+
Codeforces Problem-133A HQ9+基本思想: 本题比较坑,字符串中含有‘H’、‘Q’、‘9’字符即满足要求,‘+’是个迷惑项,不需要判断。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; bool flag=false; for (int i=0;i<s.length();i++) { if (s[i]=='H'原创 2021-11-01 13:06:40 · 141 阅读 · 0 评论 -
Codeforces Problem-1606B Update Files
Codeforces Problem-1606B Update Files题目链接题目大意: 给定一个电脑总数目n和总线数k,所要的文件在第一台电脑上,传输一个文件需要消耗一根电缆和一个小时的时间,问最少需要多少小时才能将文件传到每一台电脑上。基本思想: 本题的想法很简单,若不规定k的大小,则我们很容易可以得到:1→2→4→8→…现在规定了k的大小,所以需要判断一下当前已完成传输的电脑的数目和k的大小,取二者的最小值,就是下一次传输电脑的个数,直到大于等于k为止,接下来就可以利用数学公原创 2021-10-30 16:03:33 · 212 阅读 · 0 评论 -
Codeforces Problem-1606A AB Balance
Codeforces Problem-1606A AB Balance题目链接题目大意: 给定一个只含有’a’和’b’字符的字符串,要将其中的"ab"和"ba"的数量调成一样大小(取二者最小的为标准),将变化好的字符串输出出来。基本思想:1.先来看一个例子: string s=“aaaaabbbb”; 在这一段字符串中,可以很明显的得到:字符串“ab”=1,“ba”=0。那么为了将其变化成题目要求的字符串,需要将最后一位变为a即可,即s=“aaaaabbba”; 2原创 2021-10-30 15:47:41 · 307 阅读 · 0 评论 -
Codeforces Problem-467A George and Accommodation
Codeforces Problem-467A George and AccommodationAC代码:#include <bits/stdc++.h>using namespace std;int main(){ int p[105],q[105]; memset(p,0,sizeof(p)); memset(q,0,sizeof(q)); int n; cin>>n; int ans=0; for (int i=1;i<=n;i++) {原创 2021-10-29 16:05:58 · 102 阅读 · 0 评论 -
Codeforces Problem-677A Vanya and Fence
Codeforces Problem-677A Vanya and Fence基本思想:对于n个人的身高,如果严格大于h,ans=ans+2;否则,ans=ans+1。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n,h; cin>>n>>h; int a[1005]; memset(a,0,sizeof(a)); int ans=0; for (int原创 2021-10-28 13:39:39 · 110 阅读 · 0 评论 -
Codeforces Problem-271A Beautiful Year
Codeforces Problem-271A Beautiful Year基本思想:对于一个四位数字y,判断它的每一位数字是否有相同的。考虑到本题一定有一个答案,则先进行y++的操作。令a=y%10,b=y/10%10,c=y/100%10,d=y/1000%10,可得到y的四位数字,利用while循环即可得到最后的答案。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int y; cin>原创 2021-10-27 21:51:19 · 142 阅读 · 0 评论 -
Codeforces Problem-160A Twins
Codeforces Problem-160A Twins基本思想:本题的大意为:拿最少的硬币数量,使得自己的钱数严格比剩余的钱数多。算法步骤(贪心思想):计算总钱数sum;排序硬币的面值,从大到小排列;从头开始遍历,并计算总钱数s,直到s>sum-s为止,输出最后的结果。AC代码:#include <bits/stdc++.h>using namespace std;bool cmp(int a,int b){ return a>b;}in原创 2021-10-26 12:31:28 · 123 阅读 · 0 评论 -
Codeforces Problem-734A Anton and Danik
Codeforces Problem-734A Anton and Danik基本思想:从字符串第一个字符开始,直到结束,统计字符‘A’和字符‘D’的数目,按照要求进行输出即可。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; string s; cin>>s; int a=0,d=0; for (int i=0;i<n;i++)原创 2021-10-25 14:39:03 · 110 阅读 · 0 评论 -
Codeforces Problem-41A Translation
Codeforces Problem-41A TranslationAC代码:#include <bits/stdc++.h>using namespace std;int main(){ string s1,s2; cin>>s1>>s2; reverse(s1.begin(),s1.end()); cout<<(s1==s2?"YES":"NO")<<endl; return 0;}原创 2021-10-24 20:46:16 · 134 阅读 · 0 评论 -
Codeforces Problem-122A Lucky Division
Codeforces Problem-122A Lucky Division基本思想:由于n的范围有限,可以定义一个由幸运数字组成的数组,判断数字n能否整除数组中的元素。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int a[14]={4,7,44,47,74,77,444,447,474,477,744,747,774,777}; int n; cin>>n; int fla原创 2021-10-21 13:44:26 · 94 阅读 · 0 评论 -
Codeforces Problem-110A Nearly Lucky Number
Codeforces Problem-110A Nearly Lucky Number基本思想:本题的大意为:给定一个数字,判断其中4和7的个数,如果4和7的个数为4或7个,则输出YES,否则输出NO。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; int flag=0; for (int i=0;i<s.length();i++) {原创 2021-10-20 14:53:41 · 171 阅读 · 0 评论 -
Codeforces Problem-266B Queue at the School
Codeforces Problem-266B Queue at the School基本思想:对于一个字符串s,进行t次遍历。每一次遍历都进行以下操作:1.如果s[i]为’B’且s[i+1]为‘G’,则交换两者的位置,i=i+2;2.否则,继续向后遍历,直至字符串结束。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n,t; string s; cin>>n>&g原创 2021-10-19 12:16:33 · 107 阅读 · 0 评论 -
Codeforces Problem-58A Chat Room
Codeforces Problem-58A Chat Room基本思想:设置一个字符串a(或字符数组),利用while循环,依次读取输入的字符,如果输入的字符x=a[i],则i++,继续比较下一个,直到输入的字符为’\n’结束。最后判断i的值与hello的字符串长度值(5)进行比较,如果等于5,则输出YES,否则输出NO。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ string a="hell原创 2021-10-18 09:57:10 · 161 阅读 · 0 评论 -
Codeforces Problem-1593D1 All are Same
Codeforces Problem-1593D1 All are Same题目链接基本思想:本题的大致意思为:给定一串数字,对于每个数都可以减k,使得最后这一串数的值都相等。算法步骤:1.去重:用一个set容器;2.记录下相邻两项的差值:用差分数组b[i]=a[i]-a[i-1];3.计算差分数组相邻两项的最大公约数;4.若set容器大小为1,则输出-1。AC代码:#include <bits/stdc++.h>using namespace std;set&l原创 2021-10-14 10:59:59 · 238 阅读 · 0 评论 -
Codeforces Problem-1593C Save More Mice
Codeforces Problem-1593C Save More Mice题目链接基本思想:这道题是一个贪心思想,离猫越近的老鼠就可以不救了,将输入的k个数进行从大到小排序,排好序后,从第一个开始移动,猫的移动步数等于老鼠距离洞口位置的步数之和,直到猫的位置大于或等于洞口的位置n。AC代码:#include <bits/stdc++.h>using namespace std;const int N=4e5+5;int a[N];bool cmp(int x,in原创 2021-10-14 10:53:00 · 376 阅读 · 0 评论 -
Codeforces Problem-1593B Make it Divisible by 25
Codeforces Problem-1593B Make it Divisible by 25题目链接基本思想:一个数被25整除:末两位只能是00、25、50、75。对于一个数n,用字符串存储。从最后一位开始,找到第一个‘0’或‘5’,若为‘0’,则从下一位开始,找到第一个‘0’或‘5’,统计这两个步骤之间的需要删除数字的个数;若为‘5’,同上一步操作,找到第一个‘2’或‘7’,统计这两个步骤之间的需要删除数字的个数。最后比较一下这两个答案,取最小的输出。AC代码:#include &l原创 2021-10-14 10:45:46 · 313 阅读 · 0 评论 -
Codeforces Problem-1593A Elections
Codeforces Problem-1593A Elections题目链接基本思想:直接暴力枚举即可。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); while (t--) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if (a==b&&a==c)原创 2021-10-14 10:34:21 · 247 阅读 · 0 评论 -
Codeforces Problem-116A Tram
Codeforces Problem-116A Tram基本思想:统计每次到站后,电车上的人数,将最大的人数数量输出出来。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; int ans[1005]; memset(ans,0,sizeof(ans)); cin>>n; for (int i=1;i<=n;i++) { int x,y; cin>原创 2021-10-12 18:43:59 · 98 阅读 · 0 评论 -
Codeforces Problem-59A Word
Codeforces Problem-59A Word基本思想:分别统计一个字符串中大写字母和小写字母的数量,若大写字母多,则将字符串转为大写字符串;否则转为小写字符串。AC代码:#include <bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; int up=0,low=0; for (int i=0;i<s.length();i++) { if (s[i]&g原创 2021-10-11 14:15:01 · 157 阅读 · 0 评论 -
Codeforces Problem-1594B Special Numbers
Codeforces Problem-1594B Special Numbers题目链接基本思想:这道题和洛谷上的一道题很像(P1062),思想基本一样:将数字n转换成二进制数,再将各数位的权值加在一起,就是最后的结果。算法描述:快速幂思想,在if (k&1) 这一步时,进行所有数位的累加操作(这与快速幂的写法有些不同)。考虑到n与k的值很大,在进行每一步操作的时候,需要做一步取模运算,否则会导致数字太大而影响最终的结果。AC代码:#include <bits/stdc++原创 2021-10-09 10:16:21 · 257 阅读 · 0 评论