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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

欢乐纪中某B组赛【2019.1.29】

發布時間:2023/12/3 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 欢乐纪中某B组赛【2019.1.29】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Rank1Rank1Rank1


成績

RankRankRank是有算別人的

RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC
1112017myself2017myself2017myself280280280100100100808080100100100
3332017xjq2017xjq2017xjq200200200100100100000100100100
1212122017hjq2017hjq2017hjq150150150100100100000505050
3030302017zyc2017zyc2017zyc100100100100100100000000
3030302017xxy2017xxy2017xxy100100100100100100000000
3030302017lrz2017lrz2017lrz100100100100100100000000
3030302017hzb2017hzb2017hzb100100100100100100000000
3030302017lw2017lw2017lw100100100100100100000000

正題


T1:jzoj4244?yiT1:jzoj4244-yiT1:jzoj4244?yi【貪心】

博客鏈接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86689041


T2:jzoj4245?erT2:jzoj4245-erT2:jzoj4245?erdp,dp,dp,貪心】

博客鏈接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86689149


T3:jzoj4246?sanT3:jzoj4246-sanT3:jzoj4246?san【最短路,SPFA,DAGdp,SPFA,DAGdp,SPFA,DAGdp

博客鏈接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86689203


someofcodesome\ of\ codesome?of?code


T2 80分code

#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; const int N=110; int n,m,k,add[N],sum[N],cnt1,cnt2,mul[N]; int fff,f[N][N*2000],maxs[N],a1,a2; double ans,summ[N]; bool cmp(int x,int y) {return x>y;} int main() {scanf("%d%d%d",&n,&m,&k);scanf("%d",&a1);if(n==2) scanf("%d",&a2);for(int i=1;i<=m;i++){int x,t;scanf("%d%d",&t,&x);if(t==1) fff=x;if(t==2) add[++cnt1]=x;if(t==3) mul[++cnt2]=x;}sort(add+1,add+1+cnt1,cmp);sort(mul+1,mul+1+cnt2,cmp);sum[0]=a1+a2;for(int i=1;i<=max(cnt1,cnt2);i++){summ[i]=summ[i-1]+log(mul[i]);sum[i]=sum[i-1]+add[i];}memset(f,0xcf,sizeof(f));f[0][a1]=a1*a2;for(int i=0;i<=cnt1;i++){for(int j=a1;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=k-u;ans=max(ans,log(maxs[u])+summ[mu]);}if(fff){k--;sum[0]=fff+a2;for(int i=1;i<=cnt1;i++)sum[i]=sum[i-1]+add[i];memset(f,0xcf,sizeof(f));memset(maxs,0,sizeof(maxs));f[0][fff]=fff*a2;for(int i=0;i<=cnt1;i++){for(int j=fff;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=k-u;ans=max(ans,log(maxs[u])+summ[mu]);}sum[0]=a1+fff;for(int i=1;i<=cnt1;i++)sum[i]=sum[i-1]+add[i];memset(f,0xcf,sizeof(f));memset(maxs,0,sizeof(maxs));f[0][a1]=a1*fff;for(int i=0;i<=cnt1;i++){for(int j=a1;j<=sum[i];j++){f[i+1][j]=max(f[i][j]+add[i+1]*j,f[i+1][j]);f[i+1][j+add[i+1]]=max(f[i][j]+add[i+1]*(sum[i]-j),f[i+1][j+add[i+1]]);maxs[i]=max(maxs[i],f[i][j]);}}for(int u=0;u<=k;u++){int mu=k-u;ans=max(ans,log(maxs[u])+summ[mu]);}}printf("%.3lf",ans); }

T2 60分code

#include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int N=110; int n,m,k,a1,t,x,add[N],mul[N],cnt1,cnt2,f,a2; double ans,sum[N]; bool cmp(int x,int y) {return x>y;} void check_nf(int A1,int A2) {for(int u=0;u<=min(k,cnt1);u++){int a1=A1,a2=A2;for(int i=1;i<=u;i++)if(n==1||a1<a2) a1+=add[i];else a2+=add[i];//printf("%d %d\n",a1,a2);ans=max(ans,log(a1)+log(a2)+sum[min(k-u,cnt2)]);} } void check_f(int A1,int A2) {k--;if(A1<A2) A1=f;else A2=f;for(int u=0;u<=min(k,cnt1);u++){int a1=A1,a2=A2;for(int i=1;i<=u;i++)if(n==1||a1<a2) a1+=add[i];else a2+=add[i];ans=max(ans,log(a1)+log(a2)+sum[min(k-u,cnt2)]);} } int main() {//freopen("data.in","r",stdin);//freopen("data.ans","w",stdout);scanf("%d%d%d",&n,&m,&k);scanf("%d",&a1);if(n==2) scanf("%d",&a2);for(int i=1;i<=m;i++){int t,x;scanf("%d%d",&t,&x);if(t==1) f=x;else if(t==2)add[++cnt1]=x;else if(t==3)mul[++cnt2]=x;}sort(add+1,add+1+cnt1,cmp);sort(mul+1,mul+1+cnt2,cmp);for(int i=1;i<=cnt2;i++)sum[i]=sum[i-1]+log(mul[i]);check_nf(a1,a2);if(f) check_f(a1,a2);printf("%0.3lf",ans);}

總結

T1看完題之前以為是之前做過的一道惡心的dp,結果發現是水題,切掉。然后看T2,開始不會自然對數,結果發現就是log,然后寫了個貪心先。之后看T3,先寫了一個多源最短路,然后發現之后不會,之后仔細看一下題目,發現其實只有最短路上的邊有用,這樣就是有向無環圖了,切掉。
之后T2怕貪心是錯的,寫個dp,調了半天。只有80。考完后發現是沒有特判n=1的情況。

看題預估分(100+20+30=150)(100+20+30=150)(100+20+30=150)

做題預估分(100+50+50=200)(100+50+50=200)(100+50+50=200)

實際分數(100+80+100=280)(100+80+100=280)(100+80+100=280)

Rank1?Rank1?Rank1?還可以耶


尾聲

沒有尾聲

總結

以上是生活随笔為你收集整理的欢乐纪中某B组赛【2019.1.29】的全部內容,希望文章能夠幫你解決所遇到的問題。

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