您的位置:首页 > 其它

HDU 1051 - Wooden Sticks

2016-05-03 23:04 337 查看
贪心吧

保证一维非递减的情况下,计算另一维上最少有几个非递减序列,就是答案

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int t,n;
struct P{
int l,w;
}s[5005];
bool cmp(P a,P b)
{
return a.l==b.l?a.w<b.w : a.l<b.l;
}
int ans[5005];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d%d",&s[i].l,&s[i].w);
sort(s,s+n,cmp);
ans[0]=0;
int cnt=0;
for(int i=0;i<n;i++)
{
bool flag=0;
for(int j=0;j<cnt;j++)
{
if(ans[j]<=s[i].w)
{
ans[j]=s[i].w;
flag=1;
break;
}
}
if(!flag)
{
ans[cnt++]=s[i].w;
}
}
cout<<cnt<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: