天天看點

新生賽002(涼心的比賽)補題新生賽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

題幹傳送門

題意

思路+代碼