日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021暑假每日一题 【week7 完结】

發布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021暑假每日一题 【week7 完结】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 3806. 最小化字符串【難度: 一般 / 知識點: 貪心】
  • 3807. 構造字符串【難度: 簡單 / 知識點: 貪心】
  • 3808. 畫正方形【難度: 一般 / 知識點: 思維】
  • 3809. 修改數組【難度: 一般 / 知識點: 貪心 枚舉】
  • 3810. 最長連續休息時間【難度: 一般 / 知識點: 模擬 斷環成鏈】

3806. 最小化字符串【難度: 一般 / 知識點: 貪心】


如果一個字母后的字母小于當前的字母,則刪除該字母。
如果都不滿足則只能刪除最后一個

#include<bits/stdc++.h> using namespace std; int main(void) {int t; cin>>t;while(t--){int n; cin>>n;string s; cin>>s;int index=0;for(int i=1;i<s.size();i++){if(s[i]<s[i-1]) {index=i;break;}}string ans;if(index){ans=s.substr(0,index-1);ans+=s.substr(index);}else ans=s.substr(0,n-1);cout<<ans<<endl;}return 0; }

3807. 構造字符串【難度: 簡單 / 知識點: 貪心】


就是說在出現次數最少的字符串中,找到一個最大的最小值。
那么我們就要盡可能的平均分配,這樣最小值才會盡可能的大

#include<bits/stdc++.h> using namespace std; int main(void) {int t; cin>>t;while(t--){int n,k; cin>>n>>k;string ans;for(int i=1;i<=n/k;i++){for(int j=0;j<k;j++){ans+='a'+j;}}for(int i=0;i<n%k;i++) ans+='a'+i;cout<<ans<<endl;}return 0; }

3808. 畫正方形【難度: 一般 / 知識點: 思維】


題目的意思其實就是 xy>=n 且 x+y 要盡可能的小。
故在滿足 xy>=n 的條件下 讓 x和y盡可能的接近

#include<bits/stdc++.h> using namespace std; int main(void) {int t; cin>>t;while(t--){int n; cin>>n;int x=1,y=1;while(x*y<n){if(x>=y) y++;//讓它們盡可能的平分else x++;}cout<<x+y<<endl;}return 0; }

3809. 修改數組【難度: 一般 / 知識點: 貪心 枚舉】

#include<bits/stdc++.h> using namespace std; const int N=1e3+10; int a[N],n; int main(void) {int t; cin>>t;while(t--){cin>>n;int temp=0;for(int i=0;i<n;i++) cin>>a[i],temp=max(temp,a[i]);int ans=1e9,index=0;for(int i=1;i<=temp;i++)//枚舉答案{int sum=0;for(int j=0;j<n;j++){if(abs(a[j]-i)<=1) continue;else sum+=abs(a[j]-i)-1;}if(sum<ans) ans=sum,index=i;}cout<<index<<" "<<ans<<endl;}return 0; }

3810. 最長連續休息時間【難度: 一般 / 知識點: 模擬 斷環成鏈】

#include<bits/stdc++.h> using namespace std; const int N=1e5*4+10; int a[N],n,t; int main(void) {cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++) cin>>a[i],a[i+n]=a[i];int cnt=0;int ans=0;for(int i=0;i<2*n;i++){if(a[i]==1) cnt++;else cnt=0;ans=max(ans,cnt);}cout<<ans<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的2021暑假每日一题 【week7 完结】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。