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 |
Dont use cin#include<iostream> #include<string> using namespace std; #define maxn 1005 #define Inf 2000000000 string t[maxn]; int n,m,tot,low=Inf,high=-Inf,now; struct Component { //把cin改成scanf即可避免TLE int type,cost,quality; void Readin() { int i; char tmp[30]; scanf("%s",tmp); //这里 string str(tmp); for (i=0; i<tot; i++) if (t[i]==str) break; type=i; if (i==tot) t[tot++]=str; scanf("%s",tmp); //这里 scanf("%d%d",&cost,&quality); low<?=quality,high>?=quality; } } c[maxn]; inline int Compare(const void *a,const void *b) { return ((Component*)a)->type-((Component*)b)->type; } void Init() { tot=0; scanf("%d%d",&n,&m); for (int i=0; i<n; i++) c[i].Readin(); qsort(c,n,sizeof(Component),Compare); } bool Can() { int i=0,j,money=0,min_cost; while (i<n) { j=i,min_cost=Inf; while (j<n && c[j].type==c[i].type) { if (c[j].quality>=now) min_cost<?=c[j].cost; j++; } if (min_cost==Inf) return false; money+=min_cost; if (money>m) return false; i=j; } return true; } int main() { freopen("i","r",stdin); freopen("o","w",stdout); int test; for (scanf("%d",&test); test; test--) { Init(); low--,high++; while (low+1<high) { now=(low+high)/2; if (Can()) low=now; else high=now; } printf("%d\n",low); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator