.C++信息竞赛及算法第10讲 动态规划.pptxVIP

  • 1
  • 0
  • 约 10页
  • 2024-05-30 发布于广西
  • 举报
C++信息竞赛及算法第10讲动态规划.pptx

学科竞赛编程教研研究院C++NOIPNOIIOI

题目描述淘汰赛制是一种极其残酷的比赛制度。2n名选手分别标号1,2,3,…,2^n-1,2^n,他们将要参加n轮的激烈角逐。每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第3位与第4位比赛,第5位与第6位比赛……只有每场比赛的胜者才有机会参加下一轮的比赛(不会有平局)。这样,每轮将淘汰一半的选手。n轮过后,只剩下一名选手,该选手即为最终的冠军。现在已知每位选手分别与其他选手比赛获胜的概率,请你预测一下谁夺冠的概率最大。淘汰赛中

输入输出格式输入格式:输入文件elimination.in。第一行是一个整数n(l≤n≤l0),表示总轮数。接下来2^n行,每行2^n个整数,第i行第j个是Pij(0≤pij≤100,Pii=0,Pij+Pji=100),表示第i号选手与第j号选手比赛获胜的概率。输出格式:输出文件elimination.out。只有一个整数c,表示夺冠概率最大的选手编号(若有多位选手,输出编号最小者)。

输入输出样例

1PARTONEinlinevoidprework(){For(i,m,M)dp[i]=1,fa[i]=i,L[i]=R[i]=i;intx=m,y=M;For(i,1,n){y=x-1;x=1;For(j,x,y)L[j]=L[j1],R[j]=R[j1|1];}}intmain(){read(n);m=pow(2,n);M=(m1)-1;intx;For(i,1,m)For(j,1,m)read(x),a[i][j]=x/100.0;prework();For(i,1,n){For(j,m,M)g[j]=0;For(j,m,M)For(k,L[fa[j]^1],R[fa[j]^1])g[j]+=dp[k]*a[j-m+1][k-m+1];For(j,m,M)dp[j]*=g[j],fa[j]=1;}doubleans=0;For(j,m,M)ans=Max(ans,dp[j]);For(j,m,M)if(Abs(ans-dp[j])eps){printf(%d\n,j-m+1);return0;}return0;}#includealgorithm#includecstring#includecmath#includecctypeusingnamespacestd;#defineriregisterint#defineFor(i,a,b)for(rii=(a);i=(b);++i)#defineDFor(i,a,b)for(rii=(a);i=(b);--i)templateclassTinlineTMax(registerTa,registerTb){returnab?a:b;}templateclassTinlineTMin(registerTa,registerTb){returnab?a:b;}templateclassTinlineTAbs(registerTx){returnx0?x:-x;}constdoubleeps=1e-9;intn,m,M;intfa[2055],L[2055],R[2055];doubledp[2055],g[2055],a[1055][1055];templateclassTinlinevoidread(Tx){charch=getchar();x=0;while(!isdigit(ch))ch=getchar();while(isdigit(ch))x=(x3)+(x1)+(ch^48),ch=getchar();}

题目描述有一个箱子容量为VV(正整数,0≤V≤20000),同时有n个物品(0n≤30,每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。装箱问题

输入格式:1个整数,表示箱子容量1个整数,表示有n个物品接下来n行,分别表示这n个物品的各自体积输出格式:1个整数,表示箱子剩余空间。输入输出格式

输入输出样例

1PARTONE#includeiostream#includecstdiousingnamespacestd;intf[20005],w[35];intmain(){intv,n;cinvn;for(inti=1;i=n;i++)cinw[i];for(in

文档评论(0)

1亿VIP精品文档

相关文档