现在的位置: 首页 > 综合 > 正文

POJ 1065 贪心

2013年08月03日 ⁄ 综合 ⁄ 共 751字 ⁄ 字号 评论关闭
//贪心
//怎么看都觉得测试数据的l和w是反着的
//11075395	c00h00g	1065	Accepted	200K	16MS	C++	1172B	2012-12-03 22:14:06 
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;


struct Node{
    int l,w;
};
Node stick[5005];
bool visited[5005];
int n;
int T;
int cmp(Node a,Node b){
    if(a.l!=b.l)
        return a.l<b.l;
    else
        return a.w<b.w;
}
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d%d",&stick[i].l,&stick[i].w);
        memset(visited,false,sizeof(visited));
        sort(stick,stick+n,cmp);
        int res=0;
        //查找最长的 
        int l,w;
        for(int i=0;i<n;i++){
            if(visited[i]==false){
                l=stick[i].l;
                w=stick[i].w;
                visited[i]=true;
                for(int j=i+1;j<n;j++){
                    //少了visited[j]==false这一句,WA了好几次 
                    if(stick[j].l>=l&&stick[j].w>=w&&visited[j]==false){
                        l=stick[j].l;
                        w=stick[j].w;
                        visited[j]=true;
                    }
                }
                res++;
            }
        }
        printf("%d\n",res);
    }    
    return 0;
}

抱歉!评论已关闭.