首页 > 代码库 > poj 2573 Bridge (过桥问题 贪心)
poj 2573 Bridge (过桥问题 贪心)
对于此问题有两种策略
1、最快的带最慢的和次慢的
2、最快和次快带最慢和次慢
此链接有详细解释点击打开链接<span style="font-size:18px;"><span style="font-size:24px;">#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int s[1050]; int main() { int a; scanf("%d",&a); for(int i=0;i<a;i++) scanf("%d",&s[i]); if(a==1) { printf("%d\n%d\n",s[0],s[0]); return 0; } sort(s,s+a); int ans=a,cne,sum=0,d,e; while(ans>3) { int sum1=2*s[0]+s[ans-2]+s[ans-1]; int sum2=2*s[1]+s[0]+s[ans-1]; if(sum1>sum2) sum+=sum2; else sum+=sum1; ans-=2; } if(ans==3) printf("%d\n",sum+=s[0]+s[1]+s[2]); else printf("%d\n",sum+=s[1]); while(a>3) { if(s[0]+s[a-2]<2*s[1]) printf("%d %d\n%d\n%d %d\n%d\n",s[0],s[a-1],s[0],s[0],s[a-2],s[0]); else printf("%d %d\n%d\n%d %d\n%d\n",s[0],s[1],s[0],s[a-2],s[a-1],s[1]); a-=2; } if(a==3) printf("%d %d\n%d\n%d %d\n",s[0],s[2],s[0],s[0],s[1]); else printf("%d %d\n",s[0],s[1]); return 0; } </span></span>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。