比賽鏈接
https://ac.nowcoder.com/acm/contest/80027
A: JMU-1
?考察搜索的能力百度一下可知,2024 年天梯賽總決賽的比賽日為4 月 20日
參考代碼
//2024 年天梯賽總決賽的比賽日為4 月 20日
void solve(){//A+20-7cout<<"H\n";
}
B:蛋仔派對高手
鏈接:牛客網-加密比賽,需輸入邀請碼報名才可提交
來源:牛客網
若本輪有 n 個蛋仔參與,第 1 名得分為 n 分, 第 2 名得分為 n?1?分,以此類推。貝貝想知道第 k?名小蛋仔的得分是多少?
答案:n-k+1
參考代碼
void solve(){cin>>n>>m;cout<<n-m+1<<"\n";
}
C: 云享衣裳花想容
求中心圓環面積,同大大圓面積-小圓面積,代入公式直接計算
參考代碼
void solve(){double pi=3.141592;int r1,r2; cin>>r1>>r2;printf("%.6lf\n",pi*(r2*r2-r1*r1));
}
D :記憶數字
計算文本中的單詞長度,最后注意要對于每個單次模上10,題目說了只取個位的值
參考代碼
bool check(char c){if(c>='A'&&c<='Z') return true;if(c>='a'&&c<='z') return true;return false;
}void solve(){string s;getline(cin,s);n=s.size();for(int i=0;i<n;i++) if(check(s[i])){int st=i++;while(i<n&&check(s[i])){i++;}cout<<(i-st)%10;}
}
E: 預測帕魯
計算編號為x,y合成后帕魯的最接近得值,如果出現了和兩個帕魯都接近選,取編號更小的
我們可以維護一個距離已有帕魯的最小值,然后編號從小到大枚舉,保證出現兩個帕魯都接近,選編號小的(也可以從大到小枚舉,for循環的if語句給成k<=mi)
參考代碼
void solve(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];int p,q;cin>>p>>q;int tar=(a[p]+a[q]+1)/2;int id=-1,mi=INF; //記錄最小的最近據庫for(int i=1;i<=n;i++){int k=abs(a[i]-tar);if(mi>k) mi=k,id=i;}cout<<id;
}
F :統一命名規范
分三種情況模擬,駝峰,帕斯卡,下劃線
變成駝峰保證開頭字母小寫,沒有下劃線
變成帕斯卡保證開頭字母大寫,沒有下劃線
變成下劃線保證都是小寫字母,和下劃線組成
參考代碼
void solve(){string opt; cin>>n>>opt;while(n--){cin>>s;int ns=s.size();for(int j=0;j<ns;j++){if(opt=="Camel"){ //userNameif(j==0&&s[j]>='A'&&s[j]<='Z') s[j]+=32;if(s[j]=='_'){s[j+1]-=32; continue;}}else if(opt=="Pascal"){//UserNameif(j==0&&s[j]>='a'&&s[j]<='z') s[j]-=32;if(s[j]=='_'){s[j+1]-=32; continue;}}else{ //Snake user_nameif(s[j]>='A'&&s[j]<='Z'){if(j) cout<<"_";s[j]+=32;}}cout<<s[j];}cout<<"\n";}}
G : 猜單詞
字符串的長度為3,我們可以直接枚舉長度為3的所有字符串,時間復雜度(26^3),然后統計滿足5個要求的所有字符串
參考代碼
void solve(){for(int i=0;i<5;i++) cin>>s[i]>>a[i]>>b[i];
// for(int i=0;i<5;i++) cout<<s[i]<<" "<<a[i]<<" "<<b[i]<<'\n';vector<string> ans;for(char c1='A';c1<='Z';c1++)for(char c2='A';c2<='Z';c2++)for(char c3='A';c3<='Z';c3++){int ok=1;for(int i=0;i<5;i++){int k1=0,k2=0;for(int j=0;j<3;j++){char c=s[i][j];if(c==c1||c==c2||c==c3) k1++;if(j==0&&c1==c) k2++;if(j==1&&c2==c) k2++;if(j==2&&c3==c) k2++;}if(k1!=a[i]||k2!=b[i]) ok=0;}string res; res+=c1; res+=c2; res+=c3;if(ok) ans.pb(res);}cout<<ans.size()<<"\n";for(string str:ans) cout<<str<<"\n";}
H: 創造花田的魔法
只需要考慮在原字符上,考慮需要種植哪些花朵
可以種植荷花,水仙,蒼月草
種植荷花要本身就是湖泊,且它周圍8個方向都是湖泊(字符L)
種植水仙要本身是青草(字符G),且周圍有湖泊(字符L)沒有房屋(字符H)
種植蒼月松要本身就是青草(字符G),且周圍沒有房屋(字符H)
int n,m,K;
int opt,x,y,z;
char s[N][N],t[N][N];
int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,-1,1,-1,0,1};//檢查周圍是否都是湖泊
bool check(int x,int y){int res=0;for(int i=0;i<8;i++){int bx=x+dx[i],by=y+dy[i];if(bx>=1&&by>=1&&bx<=n&&by<=m&&s[bx][by]=='L') res++; }return res==8; //周圍都是湖泊
}int check2(int x,int y){int ok=1; //默認種植蒼月草for(int i=0;i<8;i++){int bx=x+dx[i],by=y+dy[i];if(bx>=1&&by>=1&&bx<=n&&by<=m){if(s[bx][by]=='H') return -1; //周圍有房屋,不能種植if(s[bx][by]=='L') ok=2; //記錄周圍有湖泊}}return ok;
}void solve(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%s",s[i]+1);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){t[i][j]=s[i][j];if(s[i][j]=='L'){ //湖泊及其周圍都是湖泊,種植荷花if(check(i,j)) t[i][j]='S';}else if(s[i][j]=='G'){ //青草int opt=check2(i,j);if(opt==1) t[i][j]='B'; //蒼月草使用`B`來表示)else if(opt==2) t[i][j]='N'; //水仙(水仙使用`N`來表示)}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) printf("%c",t[i][j]);puts("");}
}