A - Romaji 題意:本題比較簡單,給你一個字元串,要你判斷字元串中的每一個輔音字元後面是否有一個母音字元。 題解:簡單簽到題,模擬即可。 代碼: #include<iostream> #include<cstring> #include<algorithm> #define ll long ...
題意:本題比較簡單,給你一個字元串,要你判斷字元串中的每一個輔音字元後面是否有一個母音字元。
題解:簡單簽到題,模擬即可。
代碼:
#include<iostream> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main(){ string ptr; string ar="aeiou";//雲 cin>>ptr; int f=1; for(int i=0;i<ptr.length();i++){ if(ptr[i]!='n'&&ar.find(ptr[i])==-1){//輔音 if(ar.find(ptr[i+1])!=-1){ }else{ f=0; break; } } } if(f==1){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } return 0; }
B - Turn the Rectangles
題意:本題比較簡單,給你一長串長方形的長寬,要你判斷在相對位置不發生改變,你可以將任意一個矩形進行旋轉,角度為90度,方向任意的情況下,能否形成高度遞減排列。
題解:本題是一個簡單題,我們令num為第一個矩形的中兩條邊中的最大值,之後我們不多更新num的值,遍歷剩下的輸入序列,num取之後的每一個矩形的兩條邊中小於上一個num的值並且最接近num的值,如果整個序列的矩形否能找到,則我們能達到題目的要求,反之,不能。
代碼:
#include<iostream> #include<cstring> #include<set> #include<algorithm> #define ll long long using namespace std;int main(){ ll n; cin>>n; ll a,b; cin>>a>>b; int num=max(a,b); ll x,y; int f=1; for(int i=1;i<n;i++){ cin>>x>>y; if(x<=num&&y<=num){ num=max(x,y); }else{ if(x<=num){ num=x; } else if(y<=num){ num=y; }else{ f=0; } } } if(f==0){ cout<<"NO"<<endl; }else{ cout<<"YES"<<endl; } return 0; }
D - Stages
題意:本題也是一個簡單題,也是一個比較有趣的題,大概意思就是說該你一個長度為len的字元串,從中選出k個組成字元串s,要求s中的字元不能重覆,且它們的和最小(“和”等於每個字母子在字母表中的排序位置的序號有關,比如'a'=1,'z'=26);
題解:這裡,我們可以先將輸入的字元按升序排序,這樣就保證了選出的字元的和是最小的,然後根據:(ptr[i]-t)>1是否成立來判斷所選的兩個字母是否符合位置的相關要求。
代碼:
#include<iostream> #include<cstring> #include<set> #include<algorithm> #define ll long long using namespace std; int main(){ int n,k; char ptr[100],c; cin>>n>>k; cin>>ptr; sort(ptr,ptr+n); ll sum=(ptr[0]-'a'+1); char t=ptr[0]; int num=1; for(int i=1;i<n;i++){ if(num==k){ break; } if(ptr[i]-t>1){ t=ptr[i]; sum=sum+(ptr[i]-'a'+1); num++; } } if(num==k){ cout<<sum<<endl; }else{ cout<<-1<<endl; } // cout<<ptr; return 0; }
E - Planning The Expedition
題意:這一題就比較有意思了,要你去分食物,比較奇怪的是每一個人它們只吃一種食物,總共有m袋,n個人,每天吃一袋,問最多能吃幾天?
題解:這是一個模擬題,你只要把這個分食物的過程模擬出來就可以了,我們該開始時候一袋一袋分,這樣就可以保證每個人只吃一種食物,人後在兩袋兩袋的分、三袋三袋的分,一直進行到最後即可。
代碼:
#include<iostream> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main(){ int n,m,t; cin>>n>>m/*食品袋子的總數量*/; int num[120]={0}; int re=-1; for(int i=0;i<m;i++){ cin>>t; num[t]++; re=max(re,t); } int temp[100]={0}; int ans=0; for(int i=1/*每一個人所得到的數量*/;i*n<=m;i++){ int tt=1;/*第 t 種*/ for(int r=1;r<=100;r++) temp[r]=num[r]; for(int j=1;j<=n;j++){//分到第 j 個人 while(temp[tt]<i){ tt++; if(tt>re) break; } temp[tt]=temp[tt]-i; } if(tt<=re) ans=max(ans,i); } cout<<ans<<endl; return 0; }