新生賽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