AtCoder Beginner Contest 158

A - Station and Bus

解题方法:这一题只要判断一个字符串中有A和B两种字符串即可
#include<iostream>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll read(){
	ll x=0,w=1;
	char ch=0;
	while(ch<'0'||ch>'9'){
		if(ch=='-')
			w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return w*x;
}
int main(){
	string ptr;
	cin>>ptr;
	int a=0,b=0;
	for(int i=0;i<ptr.length();i++){
		if(ptr[i]=='A'){
			a++;
		}
		if(ptr[i]=='B'){
			b++;
		}
	}
	if(a&&b){
		cout<<"Yes"<<endl;
	}else{
		cout<<"No"<<endl;
	}
	return 0;
}

B - Count Balls

解题方法:这一题比较简单,要你判断前N个球有几个蓝色的球,只要进行分类讨论即可
#include<iostream>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll read(){
	ll x=0,w=1;
	char ch=0;
	while(ch<'0'||ch>'9'){
		if(ch=='-')
			w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return w*x;
}
int main(){
	ll N,A,B;
	cin>>N>>A>>B;
	if(N==(A+B)){
		cout<<A<<endl;
	}else if(N>(A+B)){
		ll num=A+B;/*总数*/
		ll t=N/num;/*可以分成t组,每组有A个蓝的*/
		ll e=N%num;/*这是余数*/
		ll y=0;
		if(e>=A){
			y=A;
		}else{
			y=e;
		} 
		cout<<A*t+y<<endl;
	}else if(N<(A+B)){
		if(N>=A){
			cout<<A<<endl;
		}else{
			cout<<N<<endl;
		}
	}
	return 0;
}

C - Tax Increase

解题方法:这一题也比较简单,但要注意它的不存在的条件,还有就是注意题目要求下取整
#include<iostream>
#include<cmath> 
using namespace std;
int main(){
	int a,b;
	cin>>a>>b;
	int ans=-1;
	for(int i=1;floor(i*0.08)<=min(a,b);i++){
		if(floor(i*0.08)==a&&floor(i*0.1)==b){
			ans=i;
			break;
		}
	}
	cout<<ans<<endl;
	return 0;
}

D - String Formation

解题方法:这一题就比较有意思了,刚开始的时候去暴力,结果TLE了,其实这一题始有技巧的,你要统计它总共翻转了多少次,然后根据它的奇偶性来判断,这样就可以避免无谓的翻转,至于添加字母这里,也要根据这一特性去操作,值得注意的是当翻转次数为奇数时,处在后面的字符串也要翻转,当为偶数时,处在前面的字符串要翻转
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	cin>>s;
	int q;
	cin>>q;
	int t,f;
	char c;
	string front,end;
	front.clear();
	end.clear();
	int re_num=0;
	for(int i=0;i<q;i++){
		cin>>t;
		if(t==1){
			re_num++;
		}else if(t==2){
			cin>>f;
			cin>>c;
			if(f==1){
				if(re_num%2==0){
					front.push_back(c);
				}else{
					end.push_back(c);
				}
			}else{
				if(re_num%2==0){
					end.push_back(c);
				}else{
					front.push_back(c);
				}
			}
		}
	}
	if(re_num%2!=0){
		reverse(end.begin(), end.end());
	}else{
		reverse(front.begin(), front.end());
	}
	string ans;
	if(re_num%2!=0){
		reverse(s.begin(), s.end());
		ans = end + s + front;
	}else{
		ans = front + s + end;
	}
	cout<<ans<<endl;
	return 0;
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
苍蓝星上艾露:给它们能的,一群dinner牛马挥刀向更弱者罢了。我写的开源求职AI co-pilot工具,优化你的简历,找到你匹配的岗位,定制你的简历,并让你做好面试准备https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:00
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司9个岗位
点赞 评论 收藏
分享
程序员小白条:主要没亮点,项目也是网上的,平平无奇,那只能海投了,奖项总得有一些,然后就是现在最好是前后端都会,自己能做项目并且运维的,要么找星球项目改改,要么找个开源项目改改,自己能拓展功能才是主要的,跟做效率很低很低
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务