poj1548-Robots Dilworth定理(偏序集定理2)
储备知识:Dilworth定理
偏序集的两个定理:
定理1)
令(X,≤)是一个有限偏序集,并令r是其最大链的大小。则X可以被划分成r个但不能再少的反链。
其对偶定理称为Dilworth定理:
定理2)
令(X,≤)是一个有限偏序集,并令m是反链的最大的大小。则X可以被划分成m个但不能再少的链。
即:链的最少划分数 = 反链的最长长度
例如:
1 7 8 2 3 4
反链:最长不上升子序列(如:(7,2))长度 = 2;
即:按升序划分,最少的链划分数为2,为(1,2,3,4)和(7,8)。
以上转自:https://www.cnblogs.com/submarinex/archive/2011/08/03/2126423.html
回到题目:Robot
题意:
有一些位置有垃圾,让机器人从左上角开始走,只能往右或者往下,问最少走多少次可以清理完所有垃圾、
题解:
一看就是网络流经典题,或者说是二分图—最小路径覆盖;但是现在毕竟是在做一些贪心,这道题用的是一种贪心相关定理,Dilworth定理。这道题可以理解为部分两点之间有偏序(可走的关系),呃,可以视为当xa<=xb&&ya<=yb时有偏序,那么姑且认为反之则为反偏序,那么定义一条链为由n-1个偏序连接起来的n个点,那么答案就是“最长反链的大小。
比如题中的数据1,我们经过处理得到2 4 4 6 4 7 6**(排序去掉一维)**,然后就转化成了求最长下降子序列。
显然逆序对是不能互相到达的,而反链就是一个逆序链,即我们所求的最长下降子序列。
————————————————
原文链接:https://blog.csdn.net/Vmurder/article/details/40818033
//2018114766 2020/7/3
#include<iostream>
#include<algorithm>
using namespace std;
#define MAX 1000
#define inf 0x3f3f3f3f
struct point {int x, y;bool operator < (const point& a)const//重载<操作符。可以对两个point使用<操作符进行比较{if (x == a.x)return y < a.y; return x < a.x;}
}s[MAX];
int f[MAX];
int main() {int x, y,i,j;s[0].y = inf;//给[0]一个大值,使得单元素链的长度也能为1,否则在处理中为零while (cin >> x >> y,x+1,y+1) {//读取case的第一个点int cnt = 0;while (x && y) {//存储并读取这一个cases[++cnt].x = x;s[cnt].y = y;//!这里不用++,x、y是同一个元素下的cin >> x >> y;}sort(s+1,s+cnt+1);//计算偏序集,找最长下降链的长度for (i = 1; i <= cnt; i++) {f[i] = 0;for (j = i - 1; j >= 0; j--) {if (s[j].y > s[i].y)f[i] = max(f[i], f[j] + 1);//i在j结尾的最大链上+1}}//找到最长反链int ans = 0;for (i = 1; i <= cnt; i++)ans = max(ans, f[i]);cout << ans << endl;}
}
poj1548-Robots Dilworth定理(偏序集定理2)相关推荐
- 圆上的定理 —— 圆周角定理与相交弦定理
相交弦定理的证明需要用到圆周角定理. 1. 圆周角定理 圆周角定理:同(等)弧所对圆周角相等: 2. 相交弦定理 相交弦定理:指圆内的两条相交弦,被交点分成的两条线段长的积相等. 或:经过圆内一点引两 ...
- 数学 {有界性定理,最值定理,零点定理,介值定理}
数学 {有界性定理,最值定理,零点定理,介值定理} {有界性定理, 最值定理} 定义 有界性定理; ( f ( x ) 在闭区间上连续 ) ⟹ ( f ( x ) 在该区间上有界 ) (f(x)在闭区 ...
- 一阶非线性常微分方程解的存在性定理—Picard-Lindelof定理
上一节简单介绍了可求解的一阶常微分方程的解法,因为大部分非线性方程是不可解的,所以需要给出解的存在性的证明.本节主要介绍一阶非线性常微分方程Cauchy问题 $$ (E)\,\,\,\,\,\frac ...
- 【luogu P3807】【模板】卢卡斯定理/Lucas 定理(含 Lucas 定理证明)
[模板]卢卡斯定理/Lucas 定理 题目链接:luogu P3807 题目大意 求 C(n,n+m)%p 的值. p 保证是质数. 思路 Lucas 定理内容 对于非负整数 nnn,mmm,质数 p ...
- 045 中值定理总结(罗尔定理,拉格朗日定理,柯西定理,泰勒公式)及型一二三四五
045 中值定理总结(罗尔定理,拉格朗日定理,柯西定理,泰勒公式)及型一二三四五
- cramer定理_Lundberg-Cramer定理
补充资料:函数逼近,正定理和逆定理 函数逼近,正定理和逆定理 approximation of functions, direct and inverse theorems 函数逼近,正定理和逆定理[ ...
- BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】...
题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...
- P2480-[SDOI2010]古代猪文【中国剩余定理,Lucas定理】
大早上起来写题有助于醒脑(其实是昨晚没睡好/kk 正题 题目链接:https://www.luogu.com.cn/problem/P2480 题目大意 给出nnn和ggg,求g∑d∣nCnd%999 ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
最新文章
- NameError: name ‘sklearn‘ is not defined的解决方法:
- traceview android studio,TraceView 的正确打开方式
- 【云图】如何制作附近实体店的地图?-微信微博支付宝
- Python 开发者的 6 个必备库
- ACL访问控制列表【笔记|实验】
- JAVA bridge设计模式,java设计模式之Bridge
- 从苹果 M1 到英伟达 Grace,“缝合风”为何在芯片大厂中盛行?
- 为什么一定要重视隐式反馈?
- Fork/Join 框架-设计与实现(翻译自论文《A Java Fork/Join Framework》原作者 Doug Lea)...
- python模拟用户数据
- 遗传算法求解TSP问题-python实现
- 工地泥浆流出大量邵阳抽泥浆罐车清理路面泥巴
- 3w最简单led灯电路图_怎么选择自己合适的LED驱动IC?(十大LED驱动IC典型应用电路图)...
- 谷歌google bard vs chatgpt给我的最大感受,速度真快,注册简单,多种答案提供。。。
- 微信开发:springboot接入微信公众号
- Textstudio 应用程序无法正常启动0xc000007b
- 放弃文华财经,自己编程实现期货程序化交易
- AP6255蓝牙语音功能的实现
- CRM系统五大技巧集成Excel为销售流程赋能
- jqweui Toast