uva 10026 貪心
阿新 • • 發佈:2017-09-08
urn sin return 字典序 pro std truct code 價值
https://vjudge.net/problem/UVA-10026
對於兩個二元組(Ti,Si),(Tj,Sj), 當先執行i時耗費的價值是Ti*Sj,反之則是Tj*Si, 顯然如果想要第一種情況更優得話,要滿足Ti*Sj<Tj*Si, 按照這個直接排序就好了,因為要求字典序最小所以當二者等價時序號小的優先。
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct node{int t,s,id;}P[1005]; 4 bool cmp(node A,node B) 5 { 6 if(A.t*B.s==A.s*B.t){7 return A.id<B.id; 8 } 9 else{ 10 return A.t*B.s<A.s*B.t; 11 } 12 } 13 int main() 14 { 15 int T,N,M,i,j,k; 16 cin>>T; 17 for(int xx=1;xx<=T;++xx) 18 { 19 if(xx>1) puts(""); 20 cin>>N; 21 for(i=1;i<=N;++i)22 { 23 P[i].id=i; 24 cin>>P[i].t>>P[i].s; 25 } 26 sort(P+1,P+1+N,cmp); 27 for(i=1;i<=N;++i) 28 { 29 if(i>1) printf(" "); 30 cout<<P[i].id; 31 } 32 puts(""); 33 } 34 return0; 35 }
uva 10026 貪心