A. Vitya in the Countryside
特判一下最后一个数是15 或者是 0的情况
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<utility>
using namespace std;
typedef long long ll;
const int qq = 1e5+10;
int n;
int dp[qq];
int main(){
scanf("%d",&n);
for(int i=1; i<=n; ++i) scanf("%d",&dp[i]);
dp[0] = dp[1];
if(dp[n]==15) printf("DOWN\n");
else if(dp[n]==0) printf("UP\n");
else if(dp[n]>dp[n-1]) printf("UP\n");
else if(dp[n]<dp[n-1]) printf("DOWN\n");
else printf("-1\n");
return 0;
}
B. Anatoly and Cockroaches
统计奇数位的r和偶数位的b,再统计出奇数位的b和偶数为的r 看这两种情况的和谁大, 那么小的哪一种情况就是需要换或者变得、取其中的最大值、
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<utility>
using namespace std;
const int qq = 1e5+10;
char str[qq];
char s[qq];
int main(){
int n;scanf("%d",&n);
scanf("%s",str);
int a,b,c,d;a=b=d=c=0;
for(int i=0; i<n; ++i){
if(i%2==0){
if(str[i]=='r') a++;
else b++;
}
else{
if(str[i]=='r') c++;
else d++;
}
}
if(c+b>=a+d) printf("%d\n", max(a, d));
else printf("%d\n", max(c, b));
return 0;
}
C. Efim and Strange Grade
这个模拟进位的题、 恶心死了
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<utility>
using namespace std;
const int qq = 2e5+10;
char s[qq];
int main(){
int n,t;scanf("%d%d",&n,&t);
scanf("%s",s);
int len = strlen(s);
int id1, id2, id;
id1=0;
for(int i=0; i<len; ++i)
if(s[i]=='.'){
id = i;
break;
}
for(int i=0; i<n; ++i)
if(s[i]!='0'||s[i+1]=='.'){
id1 = i;
break;
}
if(id==0){
for(int i=id1; i<len; ++i) printf("%c",s[i]);
printf("\n");
return 0;
}
for(int i=len-1; i>id; --i)
if(s[i]!='0'){
id2 = i;
break;
}
int flag = 0;
int k;
for(int i=id+1; i<=id2; ++i)
if(s[i]-'0'>4){
flag = 1;
k=i;
break;
}
if(!flag){
for(int i=id1; i<=id2; ++i) printf("%c",s[i]);
printf("\n");
return 0;
}
while(s[k]-'0'>4&&k!=id+1&&t){
k--;s[k]+=1;
if(s[k]>'9'){
k--;
s[k]+=1;
continue;
}
t--;
}
//printf("111\n");
if(k!=id+1||(k==id+1&&s[k]-'0'<5)){
//printf("111\n");
for(int i=id1; i<=k; ++i) printf("%c", s[i]);
printf("\n");
return 0;
}
if(s[k]-'0'>4&&t){
//printf("111\n");
id = id-1;
s[id]+=1;
int c = id;
while(s[c]>'9'&&c!=id1){
s[c] -=10;
s[c-1]+=1;
c--;
}
if(s[id1]>'9'){
s[id1]-=10;
printf("1");
}
for(int i=id1; i<=id; ++i)
printf("%c",s[i]);
printf("\n");
return 0;
}
for(int i=id1; i<=k; ++i)
printf("%c",s[i]);
return 0;
}