BZOJ2924 : [Poi1998]Flat broken lines
首先旋转坐标系
$x'=x-y$
$y'=-x-y$
则对于一个点,它下一步可以往它左上角任意一个点连线。
根据Dilworth定理,答案=这个偏序集最长反链的长度。
设f[i]为到i点为止的最长反链长度,则
f[i]=max(f[j])+1,j在i的左下角
按x坐标排序后用树状数组优化DP即可,时间复杂度$O(n\log n)$。
#include<cstdio>
#include<algorithm>
#define N 30010
int n,i,j,x,y,b[N],bit[N],f[N],ans;
struct P{int x,y;}a[N];
inline bool cmp(P a,P b){return a.x<b.x;}
inline void up(int&a,int b){if(a<b)a=b;}
inline void ins(int x,int y){for(;x<=n;x+=x&-x)up(bit[x],y);}
inline int ask(int x){int t=0;for(;x;x-=x&-x)up(t,bit[x]);return t;}
inline int lower(int x){
int l=1,r=n,mid,t;
while(l<=r)if(b[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;
return t;
}
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int main(){
for(read(n),i=1;i<=n;i++)read(x),read(y),a[i].x=x-y,a[i].y=b[i]=-x-y;
for(std::sort(a+1,a+n+1,cmp),std::sort(b+1,b+n+1),i=1;i<=n;i=j){
for(j=i;j<=n&&a[j].x==a[i].x;j++)up(ans,f[j]=ask((a[j].y=lower(a[j].y))-1)+1);
for(j=i;j<=n&&a[j].x==a[i].x;j++)ins(a[j].y,f[j]);
}
return printf("%d",ans),0;
}
BZOJ2924 : [Poi1998]Flat broken lines的更多相关文章
- BZOJ2924 [Poi1998]Flat broken lines 【Dilworth定理 + 树状数组】
题目链接 BZOJ2924 题解 题面有误..是\(45°\) 如果两个点间连线与\(x\)轴夹角在\(45°\)以内,那么它们之间连边 求最小路径覆盖 = 最长反链 由于\(45°\)比较难搞,我们 ...
- 【BZOJ】2924: [Poi1998]Flat broken lines
题意 平面上有\(n\)个点,如果两个点的线段与\(x\)轴的角在\([-45^{\circ}, 45^{\circ}]\),则两个点可以连线.求最少的折线(折线由线段首尾相连)使得覆盖所有点. 分析 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- zabbix系列(十)zabbix添加对zookeeper集群的监控
1.应用场景描述 在目前公司的业务中,有部分ESB架构用ZooKeeper作为协同服务的场景,做好ZooKeeper的监控很重要. 2.ZooKeeper监控要点 系统监控 内存使用量 ZooK ...
- zookeeper 的监控指标
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
- Dual-voltage regulator meets USB-power needs
This Design Idea stems from the limited availability of IC voltage regulators that can meet key USB- ...
- 【caffe范例详解】 - 1.Classification分类
1. 安装 首先,导入numpy和matplotlib库 # numpy是常用的科学计算库,matplot是常用的绘图库 import numpy as np import matplotlib.py ...
- 使用Zabbix监控ZooKeeper服务的健康状态
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
- zookeeper 的监控指标(一)
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
随机推荐
- 被误解的 Node.js
http://www.ibm.com/developerworks/cn/web/1201_wangqf_nodejs/ 被误解的 Node.js
- 转载 python多重继承C3算法
备注:O==object 2.python-C3算法解析: #C3 定义引用开始 C3 算法:MRO是一个有序列表L,在类被创建时就计算出来. L(Child(Base1,Base2)) = [ Ch ...
- H - Tickets dp
题目链接: https://cn.vjudge.net/contest/68966#problem/H AC代码; #include<iostream> #include<strin ...
- Javascript - Vue - vue对象的生命周期
vue对象的生命周期 从vue的创建到销毁会经过一系列的事件,这是vue对象的生命周期. 创建期间的生命周期函数 <div id="box"> <h3 id ...
- windows下nodejs服务器的安装与配置
1下载安装 download from the link: https://nodejs.org/en/ windows下的安装直接运行exe,略过-- 注:由于用户权限的问题,最好将nodejs安装 ...
- elasticsearch RTF版本介绍
说明:elastic search官方版本没有集成中文分词以及各种插件,需要手动配置,手动编译jar,对Windows用户很不友好.下载地址:https://github.com/medcl/elas ...
- Linux:安装mysql
#install mysql$ rpm -ivh MySQL-client-5.5.28-1.rhel5.x86_64.rpm --nodeps$ rpm -ivh MySQL-server-5.5. ...
- Nuxt学习笔记
参考地址:https://zh.nuxtjs.org/guide/installation 官网 http://jspang.com/2018/02/26/nuxt/ 1.目录结构 2.Nuxt常用 ...
- activiti主要组件解析
Activiti内部实现中,各主要部件关系 对外,提供Service服务,它是无状态的. 这些Service包括: protected RepositoryService repositoryServ ...
- 洛谷P2613有理数取余
传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...