AtCoder Beginner Contest 160(A~D)
2020-03-29 16:02:14来源:博客园 阅读 ()
AtCoder Beginner Contest 160(A~D)
A - Coffee
题意:给你一个字符串,要你判断是否满足一下条件,全部满足则输出“Yes”,否则输出“No”。
(1)字符串的第3个字母等于字符串的第4个字母
(2)字符串的第5个字母等于字符串的第6个字母
(3)字符串的长度为6,且全部为小写字母
题解:签到题,易解
代码:
#include<iostream> #include<cstring> #include<map> #include<algorithm> using namespace std; #define ll long long int main(){ string ptr; cin>>ptr; int f=1; for(int i=0;i<ptr.length();i++){ if(ptr[i]>='A'&&ptr[i]<'Z'){ f=0; break; } } if(f==0){ cout<<"No"<<endl; return 0; } if(ptr.length()==6){ if(ptr[2]==ptr[3]&&ptr[4]==ptr[5]){ cout<<"Yes"<<endl; }else{ cout<<"No"<<endl; } }else{ cout<<"No"<<endl; } return 0; }
B - Golden Coins
题解:是一个简单的贪心题,也属于签到题
代码:
#include<iostream> #include<cstring> #include<map> #include<algorithm> using namespace std; #define ll long long int main(){ ll mo; cin>>mo; ll sum=0; ll n1=mo/500; ll n2=(mo%500)/5; sum=n1*1000+n2*5; cout<<sum<<endl; return 0; }
C - Traveling Salesman around Lake
题意:大概意思就是存在一个周长为K的圆,在它的周边分布着N个点,分布分别距离圆的最北端的激距离分别为ai,由下面的N个数给出
题解:这一题其实比较简单,你将这个圆分为N-1段,将他们的的和,然后遍历舍去某一段,取它的最小值即可,
代码:
#include<iostream> #include<cstring> #include<algorithm> #define ll long long using namespace std; ll num[200010]={0}; int main(){ ll K,N; cin>>K>>N; memset(num,0,sizeof(num)); for(int i=0;i<N;i++){ cin>>num[i]; } sort(num,num+N); if(N==1){//只有一个 cout<<0<<endl; }else if(N==2){//有两个 ll len=num[N-1]-num[0]; cout<<min(len,K-len)<<endl; }else{//至少有三个及以上 ll min_l=10000000; ll len[200010]={0},t=0; ll sum=0; for(int i=1;i<N;i++){ len[t++]=num[i]-num[i-1]; sum=sum+len[t-1]; } len[t++]=K-num[N-1]+num[0]; sum=sum+len[t-1]; for(int i=0;i<t;i++){//丢掉第 i 个数 min_l=min(min_l,sum-len[i]); } cout<<min_l<<endl; } return 0; }
D - Line++
题意:这一题大概是讲存在N个顶点,从1~N相邻两个顶点之间存在一条边,给出x、y,这两个顶点也存在一条边,令k=1,2,3,4,,,,N-1,求两个点之间的最短距离为k对数
题解:这里可以讲每两个点的距离分为两种情况:经过x,y;不经过x,y,就可以分别求出每一对的距离,取这两者的最小值,然后用桶来给每中距离计数即可
代码:
#include<iostream> #include<cstring> #include<algorithm> #define ll long long using namespace std; ll s[2005][2005]; ll ans[2005*2005]={0}; int main(){ ll N,x,y; cin>>N>>x>>y; ll a=x,b=y; x=min(a,b); y=max(a,b); for(ll i=1;i<=N;i++){ for(ll j=i+1;j<=N;j++){ s[i][j]=min(j-i,abs(x-i)+abs(y-j)+1); } } for(int i=1;i<=N;i++){ for(int j=i+1;j<=N;j++){ ans[s[i][j]]++; } } for(int i=1;i<N;i++){ cout<<ans[i]<<endl; } return 0; }
原文链接:https://www.cnblogs.com/blogxsc/p/12594541.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- AtCoder Beginner Contest 162(A~D) 2020-04-15
- 2020年04月10日UCF Local Programming Contest 2017 2020-04-10
- 2020年3月28日UCF Local Programming Contest 2016 2020-03-31
- 2020年3月21日Benelux Algorithm Programming Contest 2019 2020-03-25
- AtCoder Grand Contest 043--A - Range Flip Find Route 2020-03-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash