本次成绩 第44名(铜牌) 虽然都是铜牌,但是这次比上次强多了2333
这次感觉水题比较多啊,但是还是有几个不会做的,你们懂那种使劲做一道两道题就是做不出来的感觉吗!!!简直要死,这次比赛和上次比赛间隔太短了,可能导致用脑过度了(滑稽)下面开始我们愉快的题解和补题环节吧!(要是我英语演讲能这么流利该有多好啊呜呜呜)流下了蒟蒻的泪水

问题 A: 变形虫

题目描述

Bessie是一只变形虫,一开始它的体重是A。在地板上从左往右依次放着N块蛋糕,第i块蛋糕的重量是Wi。变形虫从左边爬到右边,每次遇到一块蛋糕,如果蛋糕的重量恰好等于变形虫当前的重量,那么变形虫就吃掉这块蛋糕,吃完蛋糕后变形虫的重量增加了一倍;如果蛋糕的重量不等于变形虫当前的重量,那么变形虫永远也吃不了这块蛋糕了。变形虫只能从左往右爬,不能吃了某蛋糕后再往左爬。你的任务是计算变形虫的最终体重是多少。

输入

第一行,两个整数:A,N。
第二行,N个整数,空格分开,第i个整数就是第i块蛋糕的重量Wi。(1 ≤ A ≤ 1000000000,1 ≤ N ≤ 200,1 ≤ Wi ≤ 1000000000。)

输出

一个整数,变形虫的最终体重。

样例输入
复制样例数据 1 5
2 1 3 1 2

样例输出
4

提示

变形虫首先会吃掉第2块蛋糕,体重变成2。然后变形虫再吃掉第5块蛋糕,体重变成4。

判断一下下一个数是否和当前相等,不相等就跳过去,相等就加上,最后输出即可
#include<bits/stdc++.h>
using namespace std;
int main() {int a,n,x;cin>>a>>n;for(int i=0;i<n;i++) {cin>>x;if(a==x) {a*=2;}}cout<<a;
}

问题 B: 冬眠

题目描述

麻雀帕西和青蛙弗洛格是好玩伴,它们经常一起比赛唱歌。但冬天来了,青蛙弗洛格冬眠了,它的睡眠深度是D。麻雀帕西觉得好无聊,于是它想办法要唤醒弗洛格。麻雀帕西只会唱N首歌,第i首歌的音量是Si。每听完一首歌,青蛙弗洛格的睡眠深度就会减少,减少的值等于它听到的歌的音量。当青蛙弗洛格的睡眠深度大于0的时候,它会继续冬眠,当睡眠深度小于或者等于0时,它就会被唤醒了。麻雀帕西会从第1首歌开始唱,唱完第1首歌后如果弗洛格还没醒就接着唱第2首歌,如果唱完第2首歌弗洛格还没醒就接着唱第3首歌,依次类推,如果唱完第N首歌后弗洛格还没醒,那么麻雀帕西又重新从第1首歌开始唱,就像循环播放音乐一样,一直到青蛙弗洛格被唤醒为止,那么麻雀帕西总共唱了多少首歌?

输入

第一行,两个整数: D 和 N。
第二行,N个整数,空格分开,第i个整数就是第i首歌的音量Si。

输出

一个整数,麻雀帕西总共唱了多少首歌后,弗洛格会被唤醒?

样例输入
复制样例数据 13 3
5 2 4

样例输出
4

提示

麻雀帕西唱完第1首歌后,青蛙弗洛格睡眠深度变成8,
麻雀帕西唱完第2首歌后,青蛙弗洛格睡眠深度变成6,
麻雀帕西唱完第3首歌后,青蛙弗洛格睡眠深度变成2,
麻雀帕西再次唱完第1首歌后,青蛙弗洛格睡眠深度变成-3,青蛙弗洛格会被唤醒。

对80%的数据,1 ≤ D ≤ 10000,1 ≤ N ≤ 50,1 ≤ Si ≤ 100。
另外20%的数据,1 ≤ D ≤ 2000000000,1 ≤ N ≤ 50,1 ≤ Si ≤ 3。

这题差点没气死我!!!超时五次我都不知道怎么超时的,结果换成c语言就a了 看来以后想很爽的用c++必须关同步啊!
还有个关键点是数据的大小,看数据我也不记得int是多少了就开了个long long int 应该够用的吧2333
#include<stdio.h>
long long int a[100],num;
int main() {long long int  d,n,i;scanf("%lld%lld",&d,&n);for(i=0;i<n;i++)scanf("%lld",&a[i]);i=0;while(1) {if(d<=0)break;for(int i=0;i<n;i++) {d-=a[i];num++;if(d<=0)break;}}printf("%lld",num);
}

问题 C: 进制转换

题目描述

乐乐正在学进制转换,但他老是搞不清楚到底自己是否做对,请你编一程序实现两种不同进制之间的数据转换,帮他检验。

输入

共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

输出

仅一行,包含一个正整数,表示转换之后的m进制数。

样例输入
复制样例数据 16
FF
2

样例输出
11111111

本题看了队里jh大佬的题解以后茅塞顿开啊简直是! tql orz!!!  下面说一下思路把!
首先是输入,输入n进制数的时候使用string 字符串输比较好处理,然后转成十进制的操作就不用多说了,第一位乘以n的i次
方,别忘了要从i的(长度-1)次方开始计算,而且是第一位开始!!如果大于‘A’的话就让a[i]+10-'A'其目的是找出那个字
母所对应的数字是多少 (因为A代表10 以此类推) 全部转为十进制以后还没有结束!!还得转化成m进制呢,这时候就用到了
那时候刚学10进制转化为2进制的思想来将10进制转化为m进制,思想是先取余数,全部取出来以后倒序写出来,就是最终的转化
完的答案啦!当st.top()>10的时候,要把他转化成看看第几位,到最后千万不要忘记st.pop()!!!不然死循环了!!

再次感谢贾老板的题解,看了之后恍然大悟啊,以前都不会进制转换,幸亏看了他的用基础思想转换的方法
我才学会了转换 下面是他的csdn链接: 贾老板的博客
贴代码:

#include<bits/stdc++.h>
using namespace std;
int s[10000];
stack<int>st;
int main() {int n,m;string a;cin>>n>>a>>m;long long sum=0;int l=a.size();for(int i=0;i<l;i++) {if(a[i]>='0'&&a[i]<='9')s[i]=a[i]-'0';else if(a[i]>='A')s[i]+=(a[i]-'A'+10);}for(int i=l-1;i>=0;i--) {sum+=s[l-i-1]*pow(n,i);}while(sum) {st.push(sum%m);sum/=m;}while(!st.empty()) {if(st.top()>=10)cout<<char('A'-10+st.top());else if(st.top()<=9)cout<<char(st.top()+'0');st.pop();}
}

问题 D: 最大的数II

题目描述

今天,羊村要举行一次“知识竞赛”,很多羊都去参加了,村长见羊太多,决定先举行预选,选出一些人,再参加比赛,给出一个正整数M,求S=1+2+3+…+N的值中,符合条件S<=M的最大的N的值。如给出M的值为7,则N为3,因为1+2+3=6,1+2+3+4=10,所以符合S<=M的条件下,N的最大值为3。对于给定的M的值,喜羊羊很快就说出了符合条件的N的值。现在请你编写一个解决这个问题的程序。

输入

只有一个数,就是M的值。(M<=1000000000)

输出

只有一个数,就是符合题目条件的N的最大值。

样例输入
复制样例数据 7

样例输出
3

这题刚开始觉得肯定特别多坑,虽然第一个看的这个题,但是愣是没敢交,到最后检查觉得没问题了就提交了
注意一下判断条件适当的时候break就行了鸭
#include<bits/stdc++.h>
using namespace std;
int main() {int n,i=1,c=0,sum=0;cin>>n;while(1) {sum+=i;i++;if(n>=sum)c++;elsebreak;}cout<<c;
}

问题 E: 取数排列

题目描述

取1到N共N个连续的数字(1≤N≤9),组成每位数不重复的所有可能的N位数,按从小到大的顺序进行编号。当输入一个编号M时,就能打印出与该编号对应的那个N位数。例如,当N=3时,可组成的所有三位数为:

那么,输入编号M=2时,则输出132。

输入

包括两个数,即正整数N(1 <= N <= 9)和正整数M(1 <= M <= 362880)。

输出

只有一行,即与输入的编号M对应的那个N位数。

样例输入
复制样例数据 3 2

样例输出
132

这题可以用以前学的dfs全排列模版,然后多一个tot变量,设置全局变量就不用当做形参传过去了 当=tot的时候输出那一项就行了
也可以用next_permutation生成全排列  代码:
#include<bits/stdc++.h>
using namespace std;
int a[600000],bk[600000],n,tot,d;
void dfs(int s) {int i;if(s==n+1) {tot++;if(tot==d)for(int i=1;i<=n;i++)cout<<a[i];return ;}for(int i=1;i<=n;i++) {if(bk[i]==0) {a[s]=i;bk[i]=1;dfs(s+1);bk[i]=0;}}return ;
}
int main() {cin>>n>>d;dfs(1);return 0;
}

问题 F: 懒羊羊找朋友

题目描述

最近电视上热播“喜羊羊与灰太狼”,大家都说“做人要做懒羊羊”,为什么呢?因为他不愿意多做一个动作、不愿意多动一个脑筋,甚至懒得张嘴吃饭,简直是懒的无与伦比!

话说羊村的羊还真多啊!每周一早晨,羊村老村长慢羊羊同志学着人类的学校,把所有羊列队在广场上进行思想教育,主要是保持警惕防止狼类的攻击,当然也包括对懒羊羊之类的“异类”进行批评教育。

羊群列队成一个 m*n 的方阵,每只羊站在一个格子里,而且是长期固定的,便于点名啊:)晕倒!当然,这样一来的好处是,大家都知道自己的朋友站在哪个位置,虽然它们可能互相看不见,但心里都知道,并且在老村长进行无聊的训教时,大家都还想赶快结束赶快找离自己最近的朋友交流周末的开心事呢?

懒羊羊也想尽快找到自己的好朋友聊天,但是他既不愿意多走路、又不愿意动脑筋去想怎么走,所以就请智羊羊同学帮它编个程序,以便快速定位找到离它最近的一位好朋友。

如果你是智羊羊,你怎么完成这个任务呢?

输入

第 1 行为两个整数 m 和 n,2<=m,n<=100。
第 2 行为懒羊羊的位置 x,y,表示在第 x 行 y 列。
以 下 m 行 为一 个 m*n 的数字 方阵,所 有 a[i,j]的 值相等的表示是好 朋友,1<=a[i,j]<=100。
每行的两个数之间都有一个空格分隔。

输出

输出一行两个数 x1,y1,表示懒羊羊最近的一个朋友的位置在第 x1 行 y1 列,之间用一个空格隔开。
如果最近的的朋友不只一个,则输出 x1 最小的,如果还不唯一则输出 y1 最小的。
数据保证懒羊羊一定有朋友。

样例输入
复制样例数据 4 4
1 2
2 1 2 1
1 3 1 3
2 1 2 2
2 2 1 3

样例输出
1 4

提示

懒羊羊(1,2)有 5 个朋友,其中 3 个朋友(2,1)、(2,3)、(1,4)离它的距离都是一样的(2),但是其中的 x1=1 是最小的。

这题我都做到吐血了!甚至开了四维数组 还是没做出来 真的服了 下面贴个  **错误代码** 让你们看看我做的有多不容易
/*#include<bits/stdc++.h>
using namespace std;
struct node{int a;int d;int x;int y;
}a[200][200];
bool cmp(node a ,node b) {if(a.d==b.d) {if(a.x!=b.x)return a.x<b.x;else if(a.x==b.x)return a.y<b.y;}elsereturn a.d<b.d;
}
int main() {int c[200];int m,n,x1,y1,sum=0;cin>>m>>n;cin>>x1>>y1;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)a[i][j].d=0;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)cin>>a[i][j].a;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++) {if(a[i][j].a==a[x1][y1].a&&(i!=x1||j!=y1)) {cout<<i<<" "<<j<<endl;a[i][j].d=fabs(x1-i)+fabs(y1-j);a[i][j].x=i;a[i][j].y=j;sum++;}}sort(a,a+n,cmp);cout<<a[i][j].x<<" "<<a[i][j].y;
}
*/
这题当时做的时候昏迷了,明明很简单的一道题,就是做不对,我为啥当时想不起来直接开一个二维数组然后自己写个下标
啊!!!为啥非得用i和j 这样一用就昏迷啊! 我发现一个很严重的问题:当你做不对的时候并且你的思路非常难以实现,要
敢于推翻自己以前的想法!跟那个小球的题一样,我分了这么多种情况,早该想到自己写的是不对的。
这题的思路是定义一个结构体数组,然后自己定义一个下标,当二维数组中的某一项满足条件并且不是本身的时候就用结构体
存一下 记住,这里要**自己定义一个下标!!!** 不然用i很难实现 最后写一个排序函数就行了  代码:
#include<bits/stdc++.h>
using namespace std;
struct node {int x;int y;int d;
}a[200];
int b[200][200];
bool cmp(node a,node b) {if(a.d!=b.d)return a.d<b.d;else {if(a.x!=b.x)return a.x<b.x;elsereturn a.y<b.y;}
}
int main() {int m,n;cin>>m>>n;int x,y;cin>>x>>y;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)cin>>b[i][j];int k=0;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++) {if(b[i][j]==b[x][y]&&!(x==i&&y==j)) {a[k].x=i;a[k].y=j;a[k].d=fabs(x-i)+fabs(y-j);k++;}}sort(a,a+k,cmp);cout<<a[0].x<<" "<<a[0].y;
}

分享一段mhr的神仙代码:return a.d==b.d?a.x==b.x?a.y<b.y:a.x<b.x:a.d<b.d;
这个的意思和上面我写的排序是一个意思,判断之后从右往左排序,我只能说 TQL!!

问题 G: 求满足条件的数

题目描述

输入N(n<=32767),输出N以内的整数(包括N),使其数字之和为15,每行输出8个数。输出场宽为6。

输入

只包括一个整数N。

输出

符合条件的数。

样例输入
复制样例数据 200

样例输出
69 78 87 96 159 168 177 186
195

这水题居然要了我20分钟= =  原因是我写成了num==8的时候cout<<endl; 下次不能这么粗心了!
#include<bits/stdc++.h>
using namespace std;
int main() {int n,s,sum=0,num=0;cin>>n;for(int i=1;i<=n;i++) {sum=0;s=i;while(s) {sum+=s%10;s/=10;}if(sum==15) {printf("%6d",i);num++;if(num%8==0)cout<<endl;}}
}

问题 H: 自然数无序拆分

题目描述

美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物。沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状,当然也不甘示弱,向沸羊羊发起了挑战。
可是这道题目有一些难度,喜羊羊做了一会儿,见沸羊羊也十分头疼,于是就来请教你。
题目是这样的:
把自然数N(N<=100)分解为若干个自然数之和,求出有几种情况。
如N=5时,有7种情况
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3
5=5
怎么样?你要加油帮助喜羊羊哦!

输入

一个自然数N(N<=100)

输出

无序拆分的种数。

样例输入
复制样例数据 5

样例输出
7

这题不太会啊 直接看的mhr大佬的博客 下面打表代码  好像mhr大佬是学习lk大佬的 反正都是大佬!!!

马大佬的博客orz!!!
刘大佬的博客orz!!!

#include <bits/stdc++.h>
using namespace std;
int n,ans,k;
void dfs(int now,int sum,int cur)
{if(cur==k){if(sum==n)ans++;}else{for(int i=now;sum+i*(k-cur)<=n;i++)dfs(i,sum+i,cur+1);}
}
int main()
{freopen("out.txt","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);for(int h=1;h<=100;h++) {n=h;for(int i=1;i<=100;i++){k=i;dfs(1,0,0);}cout<<ans<<endl;ans=0;}
}

问题 I: 大写字母的序列

题目描述

喜羊羊最近对序列有了浓厚的兴趣,他喜欢用“小”的大写字母表示“小”的数。所谓“小”的大写字母就是大写字母越在前就越小,即:A<B<C<D<E……<Y<Z。喜羊羊喜欢改变原来序列的顺序,然后重新排序后,再写出字母的一个排列,自己再写出这个大写字母所代表的序列。现在,喜羊羊让你编一个程序,模拟喜羊羊干的事,为了方便,这里只有三个数,从小到大排序后分别代表A、B、C。

输入

第一行三个整数,不一定按顺序。三个数均小于等于 100。 第二行包含三个大写字母“A”,“B”和“C”(没有空格),代表所需要的顺序。

输出

输出一行,按照所需顺序输出三个整数,相邻两数之间用一个空格隔开。

样例输入
复制样例数据 1 5 3
ABC

样例输出
1 3 5

因为就三种情况,所以我直接枚举了一下(不是正解吧)
#include<bits/stdc++.h>
using namespace std;
int main() {int a[3];for(int i=0;i<3;i++)cin>>a[i];string d;cin>>d;if(d=="ABC") {sort(a,a+3);cout<<a[0]<<" "<<a[1]<<" "<<a[2];return 0;}if(d=="CBA") {sort(a,a+3,greater<int>());cout<<a[0]<<" "<<a[1]<<" "<<a[2];return 0;}if(d=="ACB") {sort(a,a+3);cout<<a[0]<<" "<<a[2]<<" "<<a[1];return 0;}if(d=="BAC") {sort(a,a+3);cout<<a[1]<<" "<<a[0]<<" "<<a[2];return 0;}if( d=="BCA") {sort(a,a+3);cout<<a[1]<<" "<<a[2]<<" "<<a[0];return 0;}if(d=="CAB") {sort(a,a+3);cout<<a[2]<<" "<<a[0]<<" "<<a[1];return 0;}
}

问题 J: 弗洛格

题目描述

青蛙弗洛格和它的妈妈是火星动物,在火星上,每年都有12个月,每个月的天数都是30天,每个月都是从1号开始,然后是2号,…,每月的最后一天都是30号。弗洛格妈妈想考查一下弗洛格的数学水平,于是问道:“今天是几号?”,弗洛格回答:“27号!”,妈妈说:“正确!”。妈妈接着问:“前1天是几号?”,弗洛格回答:“26号!太简单了!我读一年级就会了!”。妈妈再问:“前N天是几号?”,弗洛格皱起眉头:“这个有点难,我要写个程序来算”。由于弗洛格的编程水平一般,你能帮帮它吗?

输入

一个整数N,表示妈妈问弗洛格,前N天是几号?

输出

一个整数。

样例输入
复制样例数据 2

样例输出
25

提示

对于90%的数据,1 ≤ N ≤ 26。即问题的答案一定是本月的某一天。
另外10%的数据,27 ≤ N ≤ 50。

水题不解释,注意到上个月的情况
#include<bits/stdc++.h>
using namespace std;
int main() {int n;cin>>n;if(27-n>=1)cout<<27-n;else {cout<<27-n+30;}
}

问题 K: 移动次数最少

题目描述

有n堆糖果(2≤n≤200),排成一行,编号分别为1,2,…n。
已知每堆糖果有一定的颗数,且颗数之和均为n的倍数。移动各堆中的任意颗糖果,使每堆的数量达到相同,且移动次数最少。
移动规则:
每次可以移动任意的糖果颗数,第1堆可以移向第2堆,第2堆可以移向第1堆或第3堆,。。。。。。 第n 堆只可以移向第n -1堆。
例如,当n=4时:
堆号 1 2 3 4
颗数 9 8 17 6
移动的方法有许多种, 其中的一种方案:
① 第3堆向第4堆移动4颗,成为:9 8 13 10
② 第3堆向第2堆移动3颗,成为:9 11 10 10
③ 第2堆向第1堆移动1颗,成为:10 10 10 10
经过三次移动,每堆都成为10颗。

输入

有两行。
第一行一个整数n。
第二行n个整数,用空格分隔。

输出

一个整数(表示最少移动次数)。

样例输入
复制样例数据 4
9 8 17 6

样例输出
3

这题前几天刚做过原题...这里说一下思路把:
这题先算出来她们的平均数(就是她们到最后要达到的数)然后a[i+1]=a[i+1]+a[i]-ave的意思是 如果前面的大于平均数的话,
就让前面的减去平均数,相当于前面的数拿到了后面,如果小于平均数就相当于大的分一点到前面小的,如果等于平均数就不计数
这样实际上用的是贪心的思想,一次过去就能全部变成平均数。
#include<bits/stdc++.h>
using namespace std;
int a[10000];
int main() {int n,sum=0,num=0;cin>>n;for(int i=0;i<n;i++) {cin>>a[i];sum+=a[i];}int ave=sum/n;for(int i=0;i<n-1;i++) {if(a[i]!=ave)num++;a[i+1]=a[i+1]+a[i]-ave;}cout<<num;
}

问题 L: 小矮人

题目描述

最初出现“七个小矮人”的是德国著名童话集《格林童话》之中的《白雪公主》。原文讲述了一个可爱美丽的公主因为被恶毒后母嫉妒其美貌而被迫逃到森林,在缘分安排下偶遇善良的七个小矮人。最后在他们帮助下,破解了后母的诅咒,找到了王子的真爱的故事。七个小矮人的姓名分别是:万事通、害羞鬼、瞌睡虫、喷嚏精、开心果、迷糊鬼、爱生气。白雪公主经常为这七个小矮人讲故事。白雪公主还为这七个小矮人安排了学号,学号分别是1至7号。有一次,白雪公主又邀请七个小矮人来听她讲故事,但是只来了六个小矮人,那么缺席的那个小矮人是谁呢?

输入

一行,6个学号,空格分开,表示来听故事的六个小矮人的学号。

输出

没来听故事的小矮人的学号。

样例输入
复制样例数据 3 5 2 1 7 4

样例输出
6

直接开桶 没出现过直接输出 小矮人的学号笑死我哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

#include<bits/stdc++.h>
using namespace std;
int a[10];
int main() {int x;for(int i=0;i<6;i++) {cin>>x;a[x]++;}for(int i=1;i<=7;i++) {if(a[i]==0)cout<<i;}
}

问题 M: 小米

题目描述

小米同学现在读四年级,小米同学想知道自己成年后的身高大概是多少。于是小米同学上网查找资料,终于找到了一条计算公式:
1、如果小米是男生,那么成年后身高 = (父亲身高+母亲身高+13厘米)div 2
2、如果小米是女生,那么成年后身高 = (父亲身高+母亲身高-13厘米) div 2

输入

一行,三个整数:father、mother、me。其中father是父亲身高,mother是母亲身高,me如果是1,则代表小米是男生;me如果是0,则代表小米是女生。(140 ≤ father ≤ 200,140 ≤ mother ≤ 200。 me=1或者me=0。)

输出

一个整数,表示小米同学成年后的身高。

样例输入
复制样例数据 174 162 0

样例输出
161

提示

父亲身高174,母亲身高161,小米是女生,因此身高是
(174+162-13)div 2 = 323 div 2 = 161

题目中的div是表示整除, A div B 表示的意义是A除以B的商,忽略余数。
例如: 10 div 2 = 5,因为10除以2的商是5。 9 div 2 = 4,因为9除以2的商是4。

这题先判断男女 然后按规则来算就行啦~
#include<bits/stdc++.h>
using namespace std;
int main() {int a,b,c;cin>>a>>b>>c;if(c==1) {cout<<(a+b+13)/2;}if(c==0)cout<<(a+b-13)/2;
}

问题 N: 小球

题目描述

有R个红色盒子和B个蓝色盒子,还有R个红色小球和B个蓝色小球。每个盒子只能装一个小球,每个小球都要放在一个盒子里。如果把一个红色小球放在一个红色盒子里,那么得分是C。如果把一个蓝色小球放在一个蓝色盒子里,那么得分是D。如果把一个红色小球放在一个蓝色盒子里,那么得分是E。如果把一个蓝色小球放在一个红色盒子里,那么得分也是E。现在给出R,B,C,D,E。应该如何放置这些小球进盒子,才能使得总得分最大?输出最大的总得分。

输入

一行,5个整数,分别是R,B,C,D,E。(1 ≤ R ≤ 100,1 ≤ B ≤ 100, -1000 ≤ C,D,E ≤ 1000)

输出

一个整数,最大总得分。

样例输入
复制样例数据 2 3 100 400 200

样例输出
1400

提示

这题我上来就觉得可以把每种情况全部枚举出来,可是我写着写着就发现这是一个无底洞!怎么写也写不完
等我好不容易写完以后提交居然给我WA了 真要自闭了当时 分享一下我的沙雕瞬间: 下面有正确做法
#include<bits/stdc++.h>
using namespace std;
int main() {int m,n,sum=0,c,b,a;cin>>m>>n>>a>>b>>c;if(a>=b) {if(b>=c)sum+=m*a+n*b;else if(c>=b) {if(a>=c) {if((m+n)*c>=(a*m+b*n))sum+=(m+n)*c;elsesum+=a*m+b*n;}else if(c>=a)sum+=(m+n)*c;}}else if(b>=a) {if(a>=c)sum+=b*n+a*m;else if(c>=a) {if(b>=c) {if((m+n)*c>=(a*m+b*n))sum+=(m+n)*c;elsesum+=a*m+b*n;}else if(b<=c)sum+=(m+n)*c;}}else if(c>=a) {if(a>=b)sum+=(m+n)*c;else if(b>=a) {if(c>=b)sum+=(m+n)*c;else if(c<=b) {if((m+n)*c>=(a*m+b*n))sum+=(m+n)*c;elsesum+=a*m+b*n}}}cout<<sum;
}
后来听说只有三种情况之后的我都要吐血了好不好...今天太晚了 明天 我写一份代码实现 现在都凌晨三点了...
今天来更新啦! 我刚从小马哥的博客弄明白这几种情况,先算出来如果都放到自己的盒子里面的结果,然后判断,有一种特例是
蓝色小球和红色小球的数量相等的时候,完全交换,剩下的情况举个例子吧,假如说红色的小球比较多,如果蓝色小球放到红色
的盒子里面,就会发现红色的盒子少了一个,所以就必须把一个红色的放到蓝色里面去,所以在计算的时候,算交换(就是放到
对方盒子里面的球的时候不要忘记乘二!!!!!! 一共就这几种情况,算出两个re 然后比较出最大值输出即可了(不存在交换
部分的情况)

问题 O: 找最长良序字符串

题目描述

我们将“ABC”或“ACEG”等类似的字串称为良序字串(因为它们是按ASCII码排列的),而像“ACB”或“ACCD”或“AGCD”则不可称为良序字串。
编写程序,将键入的一串字符中的最长良序字串找出来,并输出其长度。

输入

一串字符(长度≤255)。

输出

仅一行,一个最长良序字串的长度。

样例输入
复制样例数据 23423555423567

样例输出
5

本题可以边判断边比较 到最后输出最大的maxn 通过这题我发现输出过程对结果错误的理解非常有帮助!!以后结果错的话可
把过程输出来自己模拟一下 就知道哪里错了  代码:
#include<bits/stdc++.h>
using namespace std;
int main() {string a;cin>>a;int maxn=-9999999,sum=1;for(int i=1;i<a.length();i++) {if(a[i]>a[i-1]) {sum++;}else {sum=1;}maxn=max(maxn,sum);}cout<<maxn;
}

本次成绩 44名(铜牌)
当我写完这篇博客以后一看表发现都已经凌晨三点了,自己都惊了,现在困得要死 不过我突然发现
我对这东西是真的热爱啊 希望以后自己的水平可以更上一层楼把,得更努力学习才行啊,不然跟不上
队里大佬的步伐啦!~

2018-2019赛季多校联合新生训练赛第三场题解和补题(中石油)相关推荐

  1. 2018-2019赛季多校联合新生训练赛第六场补题与题解(中石油)

    **总结:**这场比赛是我成绩最好的一次,也是打比赛这么多以来第一次拿到银牌(40名)可能因为昨天是我弟弟的生日把哈哈哈哈有他在家里保佑我进银牌区,这场比赛怎么说呢,考点和难度感觉都比上次要高了很多, ...

  2. 2018-2019赛季多校联合新生训练赛第七场补题和题解(中石油)

    这次比赛我因为打了山师的比赛,两个比赛时间有一点冲突,所以就没打,是我打完山师以后才来看的这场比赛,总体来说我感觉这场比赛有的题难度不大,有的题卡超时挺烦的,必须想出不是常规的方法,这一点还挺难的,我 ...

  3. 2018-2019赛季多校联合新生训练赛第四场

    问题 A: 数一数时间限制: 1 Sec 内存限制: 128 MB 题目描述 星期天早上,小明开始做数学家庭作业.因为小明成绩很优异,觉得题目太简单了,思考出道难点的数学题去学校考考同学,他注意到:数 ...

  4. 2018-2019赛季多校联合新生训练赛第五场补题与题解(中石油)

    总结:这场比赛比的我很迷啊,刚开始一个多小时就a了七道题,然后往后怎么做都做不出来题了...我也不知道为什么,反正比赛途中因为一个题做不出来直接自闭(疯狂锤头),通过这场比赛我发现一件事情:打比赛的时 ...

  5. 中国石油大学 2018-2019赛季多校联合新生训练赛第一场 题解与补题

    这场比赛是在18年12月,因为当时完全不敢用C++,感觉很遥远的样子-代码都是拿C实现的,许多地方其实也可以优化的. 问题 A: 录取分数线 时间限制: 1 Sec 内存限制: 128 MB 题目描述 ...

  6. 2018-2019赛季多校联合新生训练赛第一场题解和补题(中石油)

    做这个题用了没多长时间就a了四道题,然后觉得我可以做出更多的时候突然发现别的都不太会了..到最后才拿到一个铜牌后来听说这些 都是2011年慈溪的小学奥赛题,瞬间心态崩了...这都大学了做小学题都这么费 ...

  7. 2021年度训练联盟热身训练赛第三场(待补)

    文章目录 前言 一.Circuit Math(后缀表达式---栈&&fgets) 二.Diagonal Cut(gcd最大公因数,数论) 三.expected primary-expr ...

  8. 2021年度训练联盟热身训练赛第三场赛后补题

    2021年度训练联盟热身训练赛第三场赛后补题 A Circuit Math [题目分析] [代码展示] B Diagonal Cut [题目分析] [代码展示] C Gerrymandering [题 ...

  9. 2018年全国多校算法寒假训练赛

    A.吐泡泡(模拟) 链接:https://www.nowcoder.com/acm/contest/74/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K ...

  10. 2013多校训练赛第三场 总结

    HDU 4621~4631 今天的多校好变态,是IOI冠军出的题,把我们虐的半死了. 简单讲一下今天的情况,今天就只做了两道水题,算是签了个到,然后就卡1011(HDU 4631)一个下午了.其实感觉 ...

最新文章

  1. java如何保存初始化数据_java – 如何在JUnit测试中初始化数据
  2. 【python】Python中给List添加元素的4种方法分享
  3. ADO.NET中的五个主要对象
  4. AIO,BIO,NIO:同步阻塞式IO,同步非阻塞IO,异步非阻塞IO
  5. python dag调度系统开发_深度解析 | 基于DAG的分布式任务调度平台:Maat
  6. EntityFramework6 用 PostgreSQL
  7. 佐藤hiroko-爱拯救了我(步之物语)
  8. java微信小程序毕业设计 java微信校园运动会报名小程序系统毕业设计毕设作品参考
  9. 【和76】龙头企业在区域市场中竞合关系分析样例(温微观察13-6)
  10. echart 动画 饼图_巧用EChart画动态饼图
  11. 完全免费的小程序制作教程
  12. Hbase篇(7)-Region的分裂
  13. 卷积神经网络膨胀卷积
  14. postgresql 锁_PostgreSQL中的锁:3.其他锁
  15. 【模拟电路】常用的DC-DC电源电路图
  16. 计算机组装训练知识总结,计算机组装维护实训总结
  17. 【计算智能】模糊控制(一)模糊集合及其基本运算
  18. 初探DirectUI
  19. [和管子对话] 1 2007-4-5/对面向对象的你言我语
  20. Capstone/CS5211,CS5212,CS5256,CS5811,CS5288......CS系列芯片选型大全

热门文章

  1. Excel---饼图美化与ppt图表
  2. 磁传感器AKM8975驱动和中间层
  3. linux查看udp丢包数量,Linux下UDP丢包问题分析思路
  4. html中超链接使用_html超链接有哪些类型 html中,超链接用的是什么标签
  5. 金士顿DT100 G3 PS2251-07海力士U盘量产修复成功教程
  6. 编程基础巩固——英语单词记忆技巧
  7. 教你三步实现CDH到星环TDH的平滑迁移
  8. java gmail邮箱_Java - 谷歌邮箱发送邮件详解
  9. 如何关闭Windows自动更新
  10. WDF驱动简介及几个驱动对象介绍