bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044
还以为是CDQ。发现自己不会三维以上的……
第一问可以n^2。然后是求最长不下降子序列吗?dilworth好像不能用吧。
那就是能从自己转移到哪些状态就从自己向哪些状态连边,然后就是最小路径覆盖了。用二分图的 n-最大匹配 。
注意:没有位置的限制所以可以先按 x 排序!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=N*N;
int n,hd[N<<],xnt,to[M],nxt[M],dp[N],ans,per[N];
bool vis[N];
struct Node{
int x,y,z;
bool operator< (const Node &b) const
{return x<b.x;}
}a[N];
struct Ed{
int x,y;Ed(int x=,int y=):x(x),y(y) {}
}ed[M];
void add(int x,int y)
{
to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
}
bool dfs(int cr)
{
for(int i=hd[cr],v;i;i=nxt[i]) if(!vis[v=to[i]])
{
vis[v]=;
if(!per[v]||dfs(per[v]))
{
per[v]=cr;return true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
sort(a+,a+n+);
for(int i=;i<=n;i++)
{
dp[i]=;
for(int j=;j<i;j++)
if(a[j].x<a[i].x&&a[j].y<a[i].y&&a[j].z<a[i].z)
dp[i]=max(dp[i],dp[j]+),ed[++xnt]=Ed(j,i);
ans=max(ans,dp[i]);
}
printf("%d\n",ans); ans=; int tmp=xnt; xnt=;
for(int i=;i<=tmp;i++) add(ed[i].x,ed[i].y);
for(int i=;i<=n;i++)
{
memset(vis,,sizeof vis);
ans+=dfs(i);
}
printf("%d\n",n-ans);
return ;
}
bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)的更多相关文章
- bzoj 2044 三维导弹拦截 —— 最小路径覆盖
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 第一问暴力 n^2 即可: 注意这道题对位置没要求!所以先按第一维排序一下即可: 然后 ...
- [BZOJ] 2044: 三维导弹拦截
排序去掉一维,剩下两维可以直接\(O(n^2)\)做,也可以用二维树状数组(但是不方便建边),解决第一问 第二问,按转移顺序连边,建出DAG,求最小不可重链覆盖即可 #include<algor ...
- uva1201 DAG 最小路径覆盖,转化为 二分图
大白例题P356 你在一座城市里负责一个大型活动的接待工作.你需要去送m个人从出发地到目的地,已知每个人的出发时间出发地点,和目的地点,你的任务是用尽量少的出租车送他们,使得每次出租车接客人,至少能提 ...
- 【LA3126 训练指南】出租车 【DAG最小路径覆盖】
题意 你在一座城市里负责一个大型活动的接待工作.明天将有m位客人从城市的不同的位置出发,到达他们各自的目的地.已知每个人的出发时间,出发地点和目的地.你的任务是用尽量少的出租车送他们,使得每次出租车接 ...
- 训练指南 UVALive - 3126(DAG最小路径覆盖)
layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...
- 1350 Taxi Cab Scheme DAG最小路径覆盖
对于什么是DAG最小路径覆盖以及解题方法在我的另外的博客已经有了.http://www.cnblogs.com/Potato-lover/p/3980470.html 此题的题意: 公交车(出租车)车 ...
- POJ1422 Air Raid 【DAG最小路径覆盖】
Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6763 Accepted: 4034 Descript ...
- hdu3861 The King’s Problem 强连通缩点+DAG最小路径覆盖
对多校赛的题目,我深感无力.题目看不懂,英语是能懂的,题目具体的要求以及需要怎么做没有头绪.样例怎么来的都不明白.好吧,看题解吧. http://www.cnblogs.com/kane0526/ar ...
- HDU 3861 The King’s Problem (强连通缩点+DAG最小路径覆盖)
<题目链接> 题目大意: 一个有向图,让你按规则划分区域,要求划分的区域数最少. 规则如下:1.所有点只能属于一块区域:2,如果两点相互可达,则这两点必然要属于同一区域:3,区域内任意两点 ...
随机推荐
- Discrete Function(简单数学题)
Discrete Function There is a discrete function. It is specified for integer arguments from 1 to N (2 ...
- 移动端web常见问题解决方案
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 忽略将页面中的数字识别为电话号码 忽略Android平台中对邮箱地址的识别 当网站添加到主屏幕快速启动方式,可隐藏地址栏,仅针对i ...
- VIM复制粘贴 的快捷键是什么
yy复制游标所在行整行.或大写一个Y. 2yy或y2y复制两行. ㄟ ,请举一反三好不好! :-) y^复制至行首,或y0.不含游标所在处字元. y$复制至行尾.含游标所在处字元. yw复制一个wor ...
- mysql 修改表名的方法:sql语句
在使用mysql时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢? 可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦. 能否简单使用 ...
- action extension添加图标
最近在做ios的action extension,这里记录一下添加图标的方法. 在Action Extension的target里面的Build Settings,里面的Asset Catalog C ...
- 每天一个Linux命令(22)find命令_命令详解
find命令的一些常用参数的常用实例和用时的注意事项. 实例: (1)-name参数: 1)[sunjimeng@localhost home]$ find ~ -name & ...
- zabbix实现mysql数据库的监控(三)
上面一章“zabbix实现mysql数据库的监控(二)”使用MPM来监控mysql,但是遇到安装问题始终解决不了,这里改用percona-monitoring-plugins进行zabbxi上监控my ...
- Cache-Control常用类型
可缓存性 no-cache 强制所有缓存了此响应的缓存用户,在使用已存储的缓存数据前,发送条件请求到原始服务器,若未过期,则使用缓存数据,否则重新获取 no-store 不存储有关客户端请求或服务器响 ...
- shell 脚本后台运行知识
1. bash while01.py & 把脚本放在后台执行 2. ctl + c 停止执行前台执行中的脚本(不能停止在后台运行中的脚本) 3. ctl + z 暂停执行前台 ...
- <linux报错解决>在Fedora21下安装vmware报错的解决办法
关于VMWARE WORKSTATION在Fedora21下的安装问题 (1)在Fedora21下安装vmware如果在终端下启动,提示你找不到内核头文件Kernel Headers的话使用命令: s ...