POJ3636 Nested Dolls(贪心+二分)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3636
贪心+二分。先按w升序,w相同按h降序排。
5
1 8 2 4 2 3 3 5 4 4
答案应该为3。
二分就是新建一个数组保存每个嵌套dolls的w和h,并及时增加或更新到最大。
#include<iostream>
#include<algorithm>
using namespace std;
struct Node
{
int l,w;
bool operator<(const Node &a) const
{
if(l==a.l)
return w>a.w;
return l<a.l;
}
}node[20001],pos[20001];
int main()
{
int n,i,t,num;
scanf("%d",&t);
while(t--&&scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%d%d",&node[i].l,&node[i].w);
sort(node,node+n);
num=0;
int right,left,mid;
for(i=0;i<n;i++)
{
left=0,right=num;
while(left<right)
{
mid=(left+right)/2;
if(pos[mid].l>=node[i].l||pos[mid].w>=node[i].w)
left=mid+1;
else
right=mid;
}
if(num==left)
num++;
pos[left].l=node[i].l;
pos[left].w=node[i].w;
}
printf("%d\n",num);
}
return 0;
}

posted on 2010-04-30 16:28 CisJiong 阅读(270) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(2)

随笔分类(16)

随笔档案(11)

最新随笔

最新评论