Codeforces Round #373 (Div. 2)

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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值