记录编号 458217 评测结果 AAAAAAAAAAA
题目名称 [USACO Jan07] 干草塔 最终得分 100
用户昵称 GravatarWHZ0325 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2017-10-10 17:02:54 内存使用 0.31 MiB
显示代码纯文本
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
struct rec {
	int w;
	int l;
} arr[20];
bool cmp(rec a,rec b) {
	if(a.w==b.w) {
		return a.l>b.l;
	}
	return a.w>b.w;
}
vector<int> g[20];
void check_and_connect(int a,int b) {
	if(arr[a].w>arr[b].w&&arr[a].l>arr[b].l) {
		g[a].push_back(b);
	}
}
int d[20];
int dp(int x) {
	if(d[x]!=-1) {
		return d[x];
	}
	d[x]=1;
	for(int i=0;i<g[x].size();i++) {
		d[x]=max(d[x],dp(g[x][i])+1);
	}
	return d[x];
}
int main() {
	freopen("btwr.in","r",stdin);
	freopen("btwr.out","w",stdout);
	int n;
	scanf("%d",&n);
	int w,l;
	for(int i=0;i<n;i++) {
		scanf("%d%d",&arr[i].w,&arr[i].l);
	}
	sort(arr,arr+n,cmp);
	for(int i=0;i<n;i++) {
		for(int j=i+1;j<n;j++) {
			check_and_connect(i,j);
		}
	}
	memset(d,-1,sizeof(d));
	int ans=1;
	for(int i=0;i<n;i++) {
		ans=max(ans,dp(i));
	}
	printf("%d\n",ans);
	fclose(stdin);
	fclose(stdout);
	return 0;
}