hdu 1051 Wooden Sticks(很水的贪心)

View Code 
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 struct node
 6 {
 7     int l,w;
 8 }arr[5100];
 9 int vis[5100];
10 int cmp(node x,node y)
11 {
12     if(x.l==y.l)
13         return x.w<y.w;
14     else
15         return x.l<y.l;
16 }
17 int main()
18 {
19     int t,n;
20     scanf("%d",&t);
21     while(t--)
22     {
23         scanf("%d",&n);
24         for(int i=1;i<=n;i++)
25             scanf("%d %d",&arr[i].l,&arr[i].w);
26         sort(arr+1,arr+1+n,cmp);
27         /*for(int i=1;i<=n;i++)
28             printf("%d***%d\n",arr[i].l,arr[i].w);*/
29         memset(vis,0,sizeof(vis));
30         int ans=0,temp;
31         for(int i=1;i<=n;i++)
32             if(vis[i]==0)
33             {
34                 temp=arr[i].w;
35                 ans++;
36                 vis[i]=1;
37                 //printf("i=%d*****\n",i);
38                 for(int j=i+1;j<=n;j++)
39                   if(arr[j].w>=temp&&vis[j]==0)
40                   {
41                       temp=arr[j].w;
42                         vis[j]=1;
43                       //printf("j=%d\n",j);
44                   }
45             }
46       printf("%d\n",ans);       
47     }
48     system("pause");
49     return 0;
50
posted @ 2012-05-14 20:48  wconvey  阅读(175)  评论(0)    收藏  举报