1. 程式人生 > >uva 10026 貪心

uva 10026 貪心

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 return
0; 35 }

uva 10026 貪心