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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

AtCoder Beginner Contest 175总结

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AtCoder Beginner Contest 175总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次做了ABCE~

A - Rainy Season

懶得想直接分類討論

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<string> #include<iostream> using namespace std; int main() {string s;cin>>s;int res=0;if(s[0]=='R'&&s[1]=='R'&&s[2]=='R') cout<<3<<endl;else if(s[0]=='R'&&s[1]=='R'||s[1]=='R'&&s[2]=='R') cout<<2<<endl;else if(s[0]=='S'&&s[1]=='S'&&s[2]=='S') cout<<0<<endl;else cout<<1<<endl;return 0; }

B - Making Triangle

直接暴力

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=110; ll a[N]; int main() {int n;cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);int res=0;for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)for(int k=j+1;k<=n;k++){if(a[i]==a[j]||a[i]==a[k]||a[j]==a[k]) continue;if(a[i]+a[j]>a[k]) res++;}cout<<res<<endl;return 0; }

C - Walking Takahashi

數學題,先走到最近的。看看還剩幾步能走分類一下即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; ll x,k,d; int main() {cin>>x>>k>>d;ll cnt=abs(x)/d;if(k<=cnt) cout<<abs(x)-d*k<<endl; else{ll now=abs(x)-d*cnt;if((k-cnt)&1) cout<<abs(now-d)<<endl;else cout<<now<<endl;}return 0; }

D - Moving Piece

考場一直調都沒調出來wtcl
預處理dist[i][j]數組,表示從i開始走j步能夠得多少分。circle[i]表示從i開始走一圈會走多少步。暴力枚舉每一個點為起點開始走,然后暴力枚舉從該點開始走最終停到那個點。計算得分取最大。時間復雜度O(n2)O(n^2)O(n2)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=5010; ll dist[N][N],circle[N],mark[N]; bool st[N]; int pos[N],n; ll k; int main() {cin>>n>>k;for(int i=1;i<=n;i++) cin>>pos[i];for(int i=1;i<=n;i++) cin>>mark[i];for(int i=1;i<=n;i++){memset(st,0,sizeof st);int j=pos[i],idx=0;while(!st[j]){st[j]=1;idx++;dist[i][idx]=dist[i][idx-1]+mark[j];j=pos[j];}circle[i]=idx;}ll res=-1e18;for(int i=1;i<=n;i++)for(int j=1;j<=circle[i];j++){ll x=dist[i][j];if(k<j) break;if(dist[i][circle[i]]>=0) x+=(k-j)/circle[i]*dist[i][circle[i]];res=max(res,x);}cout<<res<<endl;return 0; }

E - Picking Goods

動態規劃f[i][j][k]f[i][j][k]f[i][j][k]方格取數
狀態表示:①集合:走到第iii行第jjj列,并且第iii行已經選擇了kkk個的集合②屬性:最大值
狀態計算:
向右走
不選第iii行第jjj列:f[i][j][k]=f[i][j?1][k]f[i][j][k]=f[i][j-1][k]f[i][j][k]=f[i][j?1][k]
選擇第iii行第jjjf[i][j][k]=f[i][j?1][k?1]+g[i][j]f[i][j][k]=f[i][j-1][k-1]+g[i][j]f[i][j][k]=f[i][j?1][k?1]+g[i][j]
向下走
不選第iii行第jjjf[i][j][0]=f[i?1][j][0…k]f[i][j][0]=f[i-1][j][0\dots k]f[i][j][0]=f[i?1][j][0k]
選擇第iii行第jjjf[i][j][1]=f[i?1][j][0…k]+g[i][j]f[i][j][1]=f[i-1][j][0\dots k]+g[i][j]f[i][j][1]=f[i?1][j][0k]+g[i][j]

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N=3010; ll g[N][N]; int n,m,k; ll f[N][N][4]; int main() {cin>>n>>m>>k;while(k--){int x,y;ll w;cin>>x>>y>>w;g[x][y]=w;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){//不選擇這一個格子ll w=max(max(f[i-1][j][0],f[i-1][j][1]),max(f[i-1][j][2],f[i-1][j][3]));for(int k=0;k<=3;k++) f[i][j][k]=max(f[i][j][k],f[i][j-1][k]);f[i][j][0]=max(f[i][j][0],w);if(g[i][j])//說明這個格子有數才能選擇{//選擇這一個格子for(int k=1;k<=3;k++) f[i][j][k]=f[i][j-1][k-1]+g[i][j];f[i][j][1]=max(f[i][j][1],w+g[i][j]);}}cout<<max(max(f[n][m][0],f[n][m][1]),max(f[n][m][2],f[n][m][3]))<<endl;return 0; }

要加油哦~

總結

以上是生活随笔為你收集整理的AtCoder Beginner Contest 175总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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