此文按照写题顺序进行整理
vj20210504
H : Fashion in Berland
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, k = 0;
scanf("%d",&n);
int a[n];
for(int i = 0; i < n; i ++){
scanf("%d",&a[i]);
}
if(n == 1){
if(a[0] == 1)printf("YES");
else{
printf("NO");
}
}
else{
for(int i = 0; i < n ; i ++){
if(a[i] == 0)k ++;
}
if(k == 1 )printf("YES");
else{
printf("NO");
}
}
return 0;
}
接下来就是第一次提交的错误代码
(第21行,因为加入了自己的推测,还是根据题意考虑问题吧,做个听话的人)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, k = 0;
scanf("%d",&n);
int a[n];
for(int i = 0; i < n; i ++){
scanf("%d",&a[i]);
}
if(n == 1){
if(a[0] == 1)printf("YES");
else{
printf("NO");
}
}
else{
for(int i = 0; i < n ; i ++){
if(a[i] == 0)k ++;
}
if(k == 1 || k == 0)printf("YES");
else{
printf("NO");
}
}
return 0;
}
G:Anton and Danik
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int a = 0, d = 0;
for(int i = 0; i < n; i ++){
char s;
cin >> s;
if(s == 'A')a ++;
else if(s == 'D')d ++;
}
if(a > d)printf("Anton");
else if(a < d)printf("Danik");
else{
printf("Friendship");
}
return 0;
}
虽然是一遍过,but 就是发现对于char和string的运用不是很熟悉,char是字符,string是字符串,用cin读入就可以了。(用cin是因为不用区分字符还是字符串,也不用区分是c还是s)
F : Vladik and flights
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
char s[n];
for(int i = 0; i < n; i ++)cin >> s[i];
if(s[a-1] == s[b-1])printf("0");
else
printf("1");
return 0;
}
E:Little Artem and Presents
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n == 1)printf("1");
else if(n == 2)printf("1");
else{
if(n % 3 == 0)printf("%d",n/3 * 2);
else{
printf("%d",n/3 * 2 + 1);
}
}
return 0;
}
下面是第一次交的时候没有过的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n == 1)printf("1");
else if(n == 2)printf("1");
else{
if(n % 3 == 0)printf("%d",2 * n / 3);
else{
printf("%d",2 * n / 3 + 1);
}
}
return 0;
}
就是关于运算的问题了,
没有通过的样例是
Input:
101
Answer:
68
就是除过3之后的问题了,dddd
对于是三的倍数的数可以分成n/3个1和2
如果不是3的倍数,在前面加2或者后面加1即可
C: Anton and Polyhedrons
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int s = 0;
string c;
while(n --){
cin >> c;
if(c[0] == 'T')s += 4;
else if(c[0] == 'C') s += 6;
else if(c[0] == 'O') s += 8;
else if(c[0] == 'D') s += 12;
else if(c[0] == 'I') s += 20;
}
cout << s;
return 0;
}
大概的错误就是关于字符和字符串的运用的判断
本人天真的以为如果直接c == 'T'
判断的是c的首部,其实不是。
B:Brain’s Photos
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
char c;
scanf("%d%d",&a,&b);
for(int i = 1; i <= a * b; i ++)
{
cin>>c;
if( c == 'C' || c == 'M' || c == 'Y')
{
printf("#Color");
return 0;
}
}
printf("#Black&White");
return 0;
}
D:Neverending competitions
原题链接
人性链接
因为他每次都是从家出发,之后去赛场,之后再回家,再去赛场。
就可以直接判断航班数,如果航班数是2的倍数,那么就是在家,如果不是,那就是在赛场
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
string s;
cin >> s;
string a;
for(int i = 0; i < n; i ++){
cin >> a;
}
if(n%2 == 0)printf("home");
else{
printf("contest");
}
return 0;
}
A:The Modcrab
第一次的错误代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h1,a1,c1,h2,a2;
scanf("%d%d%d",&h1,&a1,&c1);
scanf("%d%d",&h2,&a2);
int k = 0;
int sn,hn;
for(int s = 0;; s ++){
if(s*a1>=h2){
sn = s;
break;
}
}
for(int h = 0;; h ++){
if(h1 - (sn + h)*a2 + h*c1 > 0){
hn = h;
break;
}
}
printf("%d\n",sn+hn);
for(int i = 0; i < hn; i ++){
printf("HEAL\n");
}
for(int i = 0; i < sn; i ++){
printf("STRIKE\n");
}
return 0;
}
没有通过的样例是
INPUT
25 27 91
10 87
ANSWER
1
STRIKE
之后就是换了一下每个数据的关系,重新算,就得出的关系
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h1,a1,c1,h2,a2,k = 0;
int s = 0;
int h = 0;
scanf("%d%d%d",&h1,&a1,&c1);
scanf("%d%d",&h2,&a2);
while(h2 > 0){
if(h2 <= a1){
s += 1;
h2 -= a1;
}
else if(h1 <= a2){
h += 1;
h1 += (c1 - a2);
}
else{
s += 1;
h1 -= a2;
h2 -= a1;
}
k ++;
}
printf("%d\n",k);
for(int i = 0; i < h; i ++){
printf("HEAL\n");
}
for(int i = 0; i < s; i ++){
printf("STRIKE\n");
}
return 0;
}