洛谷 P1233 木棍加工 题解
时间:2019-09-15
本文章向大家介绍洛谷 P1233 木棍加工 题解,主要包括洛谷 P1233 木棍加工 题解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Dilworth定理:在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的链描述了任何有限偏序集的宽度。
反链是一种偏序集,其任意两个元素不可比;而链则是一种任意两个元素可比的偏序集。Dilworth定理说明,存在一个反链A与一个将序列划分为链族P的划分,使得划分中链的数量等于集合A的基数。当存在这种情况时,对任何至多能包含来自P中每一个成员一个元素的反链,A一定是此序列中的最大反链。同样地,对于任何最少包含A中的每一个元素的一个链的划分,P也一定是序列可以划分出的最小链族。偏序集的宽度被定义为A与P的共同大小。
另一种Dilworth定理的等价表述是:在有穷偏序集中,任何反链最大元素数目等于任何将集合到链的划分中链的最小数目。一个关于无限偏序集的理论指出,在此种情况下,一个偏序集具有有限的宽度w,当且仅当它可以划分为最少w条链。
对于dilworth定理,我的理解就是:
在一个序列中 最长下降子序列的个数(下降子序列的最小划分)就等于其最长不下降子序列的长度
#include <bits/stdc++.h> #pragma GCC optimize(2) using namespace std; struct haha{ int a; int b; }lala[2000010]; int n; inline bool cmp(haha x,haha y) { if(x.a==y.a) return x.b>y.b; return x.a>y.a; } int c[2000010]; inline int lowbit(register int x) { return x&(-x); } int maxn; inline int ask(register int x) { register int res=0; while(x>0){ if(res<c[x]){ res=c[x]; } x-=lowbit(x); } return res; } inline void add(register int x,register int v) { while(x<=maxn){ c[x]=max(c[x],v); x+=lowbit(x); } } int main() { cin>>n; for(register int i=1;i<=n;i++){ scanf("%d%d",&lala[i].a,&lala[i].b); maxn=max(maxn,lala[i].b); } sort(lala+1,lala+1+n,cmp); register int ans=0; for(register int i=1;i<=n;i++){ register int j=ask(lala[i].b)+1; ans=max(ans,j); add(lala[i].b+1,j); } cout<<ans; }
原文地址:https://www.cnblogs.com/kamimxr/p/11522593.html
- 特斯拉vs凯迪拉克vs奔驰:三大汽车自动驾驶系统比拼
- Centos下添加静态路由(临时和永久有效)的操作记录
- python如何保证输入键入数字
- 微信小程序自定义数据分析试水
- 挂载银行前置机Ukey到windows server2012虚拟机的操作记录
- 文件上传速度查询方法
- “AS3.0高级动画编程”学习:第三章等角投影(上)
- su: 无法设置用户ID: 资源暂时不可用
- NumPY学习笔记
- LVS负载均衡下session共享的实现方式-持久化连接
- Centos6.9下RabbitMQ集群部署记录
- “AS3.0高级动画编程”学习:第三章等角投影(下)
- zabbix监控主机cpu达到80%后报警
- ssh登陆服务器locale告警的处理方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL案例:binlog_row_image如何取舍
- “青柠日报”小程序
- 2020年学习Python-爬取英雄联盟皮肤
- R语言meta分析(10)功能强大的metafor
- Python保留字总结
- Python进阶 | 五分钟带你弄懂迭代器与生成器,夯实代码能力
- [Go]GO语言实战项目-gin框架上传图片文件
- [Go] Golang练习项目-GO语言实现选择排序
- 设计模式~策略模式
- Java单元测试框架(一)——JUnit4
- Java单元测试框架(二)——JUnit5
- 绘制双坐标轴图
- 用箭头和文字来标记重要的点
- 32.Python字符串方法split
- 程序员过关斩将--解决分布式session问题