poset_Dilworth定理及其应用
2014-12-03 17:46
127 查看
引用三篇比较好的文章,是对链,反链,偏序集,Dilworth的讲解和证明
ttang 神牛的笔记,Axl牛,lambda2fei牛
推荐四个可以用此方法做出的习题
对于边界问题,需要带数试一试
HDU 1257
poj 1065
poj 1548
HDU 1677 POJ 3636
ttang 神牛的笔记,Axl牛,lambda2fei牛
推荐四个可以用此方法做出的习题
对于边界问题,需要带数试一试
HDU 1257
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<functional> using namespace std; #define MAXN 20005 int num[MAXN],dp[MAXN]; int main() { int n; while(scanf("%d",&n) != EOF) { for(int i = 0;i < n;i++) scanf("%d",&num[i]); memset(dp,0x3f,sizeof(dp)); int ans = 0; for(int i = 0;i < n;i++) { int ind = lower_bound(dp,dp + n,num[i]) - dp; dp[ind] = num[i]; ans = max(ans,ind); } printf("%d\n",ans + 1); } }
poj 1065
#include<iostream> #include<cstring> #include<cstdio> #include <functional> #include<algorithm> using namespace std; typedef pair<int,int>pii; #define MAXN 50010 int dp[MAXN]; pii num[MAXN]; int main() { int _,n; scanf("%d",&_); while(_--) { scanf("%d",&n); for(int i = 0;i < n;i++) scanf("%d%d",&num[i].first,&num[i].second); sort(num,num + n); memset(dp,0,sizeof(dp)); int ans = 0; for(int i = 0;i < n;i++) { int ind = lower_bound(dp,dp + n,num[i].second,greater<int>()) - dp; dp[ind] = num[i].second; ans = max(ans,ind); } printf("%d\n",ans + 1); } }
poj 1548
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<functional> using namespace std; typedef pair<int,int>pii; #define x first #define y second #define MAXN 900 pii num[MAXN]; int dp[MAXN]; int main() { int n; while(scanf("%d%d",&num[0].x,&num[0].y),num[0].x + 1 | num[0].y + 1) { n = 1; while(scanf("%d%d",&num .x,&num .y),num .x | num .y) n++; sort(num,num + n); memset(dp,0,sizeof(dp)); int ans = 0; for(int i = 0;i < n;i++) { int ind = lower_bound(dp,dp + n,num[i].y,greater<int>()) - dp; dp[ind] = num[i].y; ans = max(ans,ind); } printf("%d\n",ans + 1); } }
HDU 1677 POJ 3636
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<functional> using namespace std; struct pii { int x,y; bool operator < (const pii & p)const{ return x == p.x ? y > p.y : x < p.x; } }; #define MAXN 20005 pii num[MAXN]; int dp[MAXN]; int main() { int n,_; scanf("%d",&_); while(_--) { scanf("%d",&n); for(int i = 0;i < n;i++) scanf("%d%d",&num[i].x,&num[i].y); sort(num,num + n); memset(dp,0,sizeof(dp)); int ans = 0; for(int i = 0;i < n;i++) { int ind = upper_bound(dp,dp + n,num[i].y,greater<int>()) - dp; dp[ind] = num[i].y; ans = max(ans,ind); } printf("%d\n",ans + 1); } }
相关文章推荐
- 复分析学习10——Liouville定理及其应用
- 贝叶斯推断及其互联网应用(一):定理简介
- 贝叶斯推断及其互联网应用(一):定理简介
- [置顶] 扩展欧几里得定理及其应用
- O'Stolz 定理及其应用
- “中国剩余定理”简介、算理及其应用
- 三角函数中正弦余弦定理及其应用
- 贝叶斯推断及其互联网应用(一):定理简介
- 扩展欧几里得、求乘法逆元及其应用、中国剩余定理(互质版和非互质版)、欧拉函数、快速判素数模板
- 贝叶斯推断及其互联网应用(一):定理简介
- 贝叶斯推断及其互联网应用(一):定理简介
- <转>贝叶斯推断及其互联网应用(一):定理简介
- 张恭庆编《泛函分析讲义》第二章第2节 $Riesz$ 定理及其应用习题解答
- 【转载】贝叶斯推断及其互联网应用(一):定理简介
- 剩余定理及其应用(杭电1061)
- 贝叶斯推断及其互联网应用(一):定理简介
- 贝叶斯推断及其互联网应用(一):定理简介
- 证明斯托尔兹定理及其一些有趣的应用
- 贝叶斯推断及其互联网应用(一):定理简介
- 数论:整数的唯一分解定理及其应用小结