新生赛002(凉心的比赛)补题

新生赛002(凉心的比赛(一))

这次又写了签到题

然后又是愉快的补题时间

A - 最小的二进制数

CodeForces - 976A

题干传送门

题意

其实只需要得出0和1的数目 然后输出一个1和所有的0即可

代码

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int n;
string s;
int main(){
 cin>>n;
 cin>>s;
 if(n==1)
  cout<<s;
 else{
  int sum=0;
  for(int i=0;i<s.length();i++){
   if(s[i]=='0')
    sum++;
  }
  printf("1");
  for(int i=1;i<=sum;i++)
   printf("0");
  printf("\n");
 }
 return 0;
}

B - 线段的包含关系

CodeForce - 976C

题干传送门

题意

用C++自带库函数sort先对左端点进行从大到小的排序如果左端点相同的话 再按照右端点从小到大的顺序排序 然后只需要判断排好序的序列中的右端点是否小于下一个的右端点直到遍历到最后一组
易错点:
1:sort要加+n+1(犯了类似的错好多次)
2:cmp函数在比较结构体的时候形参要用结构体的名字

思路+代码

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int i,n,flag=0;
const int maxn=300005;
struct sent{
 int l,r,record;
}str[maxn];
bool cmp(sent a,sent b){
 if(a.l != b.l) return a.l>b.l;
 else return a.r<b.r;
}
int main(){
 cin>>n;
 for(i=1;i<=n;i++){
  cin>>str[i].l>>str[i].r;
  str[i].record=i;
 }
 sort(str+1,str+n+1,cmp);
 for(i=1;i<n;i++){
  if(str[i].r<=str[i+1].r){
   flag=1;
   break;
  }
 }
 if(flag==1)
  printf("%d %d\n",str[i].record,str[i+1].record);
 else
  printf("-1 -1\n");
 return 0;
} 

C - 地下城还有劳拉

CodeForces - 976B

题干传送门

题意

思路+代码

D - 心火牧场日常计算

CodeForces - 976E

题干传送门

题意

思路+代码

E - 法法在分配工作

CodeForces - 935A

题干传送门

题意

签到题:

先分l个team leader 然后看剩下的人是否能够恰好分成l队 并且每队人数相同

思路+代码

#include <cstdio>
#include <iostream>
using namespace std;
int n,x=0,y=0,count=0;
const int maxn=100005;
char s[maxn];
int main(){
 cin>>n;
 for(int i=0;i<n;i++)
  cin>>s[i];
 for(int i=0;i<n;i++){  
  if(s[i]=='U')
   y++;
  else if(s[i]=='R')
   x++;
  if(x==y&&i+1<n&&s[i]=='U'&&s[i+1]=='U')
   count++;
  else if(x==y&&i+1<n&&s[i]=='R'&&s[i+1]=='R')
   count++;
 }
 cout<<count<<endl;
 return 0;
}

F - 法法要穿过大门

CodeForces - 935B

题干传送门

题意

计算一段路径通过大门多少次
注意1:只有通过才能算通过大门一次
2:刚开始的一次不算

思路+代码

#include <cstdio>
#include <iostream>
using namespace std;
int n,x=0,y=0,count=0;
const int maxn=100005;
char s[maxn];
int main(){
 cin>>n;
 for(int i=0;i<n;i++)
  cin>>s[i];
 for(int i=0;i<n;i++){  
  if(s[i]=='U')
   y++;
  else if(s[i]=='R')
   x++;
  if(x==y&&i+1<n&&s[i]=='U'&&s[i+1]=='U')
   count++;
  else if(x==y&&i+1<n&&s[i]=='R'&&s[i+1]=='R')
   count++;
 }
 cout<<count<<endl;
 return 0;
}

G - 发发非法是朋友

题干传送门

题意

思路+代码

H - 法法和古代字母

题意

思路+代码

I - 法法和古代数学

CodeForces - 935E

题干传送门

题意

思路+代码

发布了3 篇原创文章 · 获赞 0 · 访问量 49
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览