| ||||||||||
| 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 | |||||||||
800k^2的计算量吗??In Reply To:time limited!晕!大家有什么更好的算法呀 Posted by:a024014 at 2006-11-11 22:38:20 > #include <stdio.h>
> #include <string.h>
> #include <iostream>
> #include <algorithm>
> using namespace std;
> typedef struct
> {
> int w;
> int d;
> }Order;
> Order a[800001];
> short flag[800001];
> bool cmp(Order x,Order y)
> {
> return x.d<y.d;
> }
> int main(void)
> {
> int num,i,j,k;
> int counter,pos,max;
> while(scanf("%d",&num)!=EOF)
> {
> for(i=0;i<num;i++)
> scanf("%d%d",&a[i].w,&a[i].d);
> memset(flag,0,sizeof(flag));
> counter=num;
> pos=0;
> sort(a,a+num,cmp);
> for(i=0;i<num;i++)
> {
> pos+=a[i].w;
> if(pos>a[i].d)
> {
> max=0;
> for(j=0;j<=i;j++)
> if((!flag[j])&&a[j].w>max)
> {
> max=a[j].w;
> k=j;
> }
> flag[k]=1;
> pos-=max;
> counter--;
> }
> }
> printf("%d\n",counter);
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator