Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
《挑战程序设计竞赛》这道题例程这个if是想干啥的??#include<iostream> #include<algorithm> #include<cstdio> using namespace std; typedef long long ll; int N,L[20001]; void solve() { ll ans=0; while(N>1) { int mii1=0,mii2=1; if(L[mii1]>L[mii2]) swap(mii1,mii2); for(int i=2;i<N;i++) { if(L[i]<L[mii1]) { mii2=mii1; mii1=i; } else if(L[i]<L[mii2]) mii2=i; } int t=L[mii1]+L[mii2]; ans+=t; if(mii1==N-1)//就是这个if,去掉也AC了 swap(mii1,mii2); L[mii1]=t; L[mii2]=L[N-1]; N--; } cout<<ans<<endl; } int main(void) { int i; while(scanf("%d",&N)!=EOF) { for(i=0;i<N;i++) cin>>L[i]; solve(); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator