排序去掉一维,剩下两维可以直接\(O(n^2)\)做,也可以用二维树状数组(但是不方便建边),解决第一问

第二问,按转移顺序连边,建出DAG,求最小不可重链覆盖即可

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue> using namespace std; inline int rd(){
int ret=0,f=1;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
while(isdigit(c))ret=ret*10+c-'0',c=getchar();
return ret*f;
}
#define space() putchar(' ')
#define nextline() putchar('\n')
void pot(int x){if(!x)return;pot(x/10);putchar('0'+x%10);}
void out(int x){if(!x)putchar('0');if(x<0)putchar('-'),x=-x;pot(x);} const int MAXN = 2005;
const int INF = 1<<30; int n;
struct Node{
int x,y,z;
Node(int a=0,int b=0,int c=0){x=a;y=b;z=c;}
bool operator <(const Node &rhs)const{
return x<rhs.x;
}
}node[MAXN]; int f[MAXN];
int ans1,ans2; int nex[MAXN*MAXN],to[MAXN*MAXN],fl[MAXN*MAXN];
int head[MAXN],ecnt=1;
inline void adds(int x,int y,int f){
nex[++ecnt]=head[x];to[ecnt]=y;
fl[ecnt]=f;head[x]=ecnt;
}
inline void add(int x,int y,int f){
adds(x,y,f);adds(y,x,0);
} int dep[MAXN];
queue<int> Q;
bool bfs(int s,int t){
memset(dep,0,sizeof(dep));
Q.push(s);dep[s]=1;
while(!Q.empty()){
int top=Q.front();Q.pop();
for(int i=head[top];i;i=nex[i]){
int v=to[i];
if(dep[v]||fl[i]==0) continue;
dep[v]=dep[top]+1;
Q.push(v);
}
}
return dep[t];
}
int cur[MAXN];
int dfs(int x,int flow,int t){
if(x==t) return flow;
int tmp,used=0;
for(int &i=cur[x];i;i=nex[i]){
int v=to[i];
if(dep[v]!=dep[x]+1)continue;
tmp=dfs(v,min(flow-used,fl[i]),t);
used+=tmp;fl[i]-=tmp;fl[i^1]+=tmp;
if(used==flow) return flow;
}
if(!used) dep[x]=-1;
return used;
}
int dinic(int s,int t){
int ret=0;
while(bfs(s,t)){
memcpy(cur,head,sizeof(head));
ret+=dfs(s,INF,t);
}
return ret;
}
int main(){
n=rd();
int S=n+n+1,T=n+n+2;
int x,y,z;
for(int i=1;i<=n;i++){
x=rd();y=rd();z=rd();
node[i]=Node(x,y,z);
}
sort(node+1,node+1+n);
for(int i=1;i<=n;i++){
f[i]=1;
add(S,i,1);add(i+n,T,1);
for(int j=1;j<i;j++){
if(node[j].x==node[i].x||node[j].y>=node[i].y||node[j].z>=node[i].z)continue;
f[i]=max(f[i],f[j]+1);
add(j,i+n,1);
}
ans1=max(ans1,f[i]);
}
ans2=n-dinic(S,T);
out(ans1);nextline();
out(ans2);
return 0;
}

[BZOJ] 2044: 三维导弹拦截的更多相关文章

  1. bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 还以为是CDQ.发现自己不会三维以上的…… 第一问可以n^2.然后是求最长不下降子序列 ...

  2. bzoj 2044 三维导弹拦截 —— 最小路径覆盖

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 第一问暴力 n^2 即可: 注意这道题对位置没要求!所以先按第一维排序一下即可: 然后 ...

  3. 【BZOJ2044】三维导弹拦截 DP+(有上下界的)网络流

    [BZOJ2044]三维导弹拦截 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指 ...

  4. bzoj2044: 三维导弹拦截

    Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利!当然,A ...

  5. [bzoj2044] 三维导弹拦截 (二分图最大匹配+dp)

    传送门 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利! ...

  6. 【bzoj2044】三维导弹拦截 dp+二分图最大匹配

    题目描述 n个物品,第i个位置有ai.bi.ci三种属性.每次可以选出满足$\ a_{p_i}<a_{p_{i+1}}\ ,\ b_{p_i}<b_{p_{i+1}}\ ,\ c_{p_i ...

  7. 2020.10.17 JZOJ 提高B组T2 导弹拦截

    2020.10.17 JZOJ 提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统. 敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的 ...

  8. HDU-1257 导弹拦截系统 http://acm.hdu.edu.cn/showproblem.php?pid=1257

    Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...

  9. AC日记——导弹拦截 洛谷 P1020 (dp+模拟)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

随机推荐

  1. Batch the files in the directory

    #!/bin/bash #sourceFolder = /home/bigdatagfts/pl62716/refdata #targetFolder = /home/bigdatagfts/pl62 ...

  2. java资料

     HTML5+CSS3视频教程:http://pan.baidu.com/s/1hsyOjze   密码:c3uw JavaScript视频教程:链接:http://pan.baidu.com/s/1 ...

  3. 浅谈ThreadLocal模式

    一.前言: ThreadLocal模式,严格意义上不是一种设计模式,而是java中解决多线程数据共享问题的一个方案.ThreadLocal类是java JDK中提供的一个类,用来解决线程安全问题,并不 ...

  4. JS——变量和函数的预解析、匿名函数、函数传参、return

    JS解析过程分为两个阶段:编译阶段.执行阶段.在编译阶段会将函数function的声明和定义都提前,而将变量var的声明提前,并将var定义的变量赋值为undefined. 匿名函数: window. ...

  5. JavaScript跨域资源请求(CORS)解决方案

    跨域:当协议.主域名.子域名.端口号中任意一个不相同时都不算同一个域,而在不同域之间请求数据即为跨域请求.解决方法有以下几种(如有错误欢迎指出)以请求图片url为例: 1.通过XMLHttpReque ...

  6. CXF 发布rest服务

    1.1      什么是rest服务 REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议,REST 对于HTTP 的利用实现精确的资源定位. Rest要求对资源定位更加准 ...

  7. SpringBoot | 第三十七章:集成Jasypt实现配置项加密

    前言 近期在进行项目安全方面评审时,质量管理部门有提出需要对配置文件中的敏高文件进行加密处理,避免了信息泄露问题.想想前段时间某公司上传github时,把相应的生产数据库明文密码也一并上传了,导致了相 ...

  8. CentOS6.5 环境安装配置

    一.GO环境配置 1.运行命令进入/usr/local/src目录:cd /usr/local/src 2.下载安装包:运行wget --no-check-certificate https://st ...

  9. DataBinding 访问 3

    MVVM中的Model 我们可以用任何POJO 作为 data binding 的 Model, 但是直接修改POJO对象,不能直接更新UI android的 dataBinding 模块 给提供了通 ...

  10. linq 读取xml

    xml 文件如下: <?xml version="1.0" encoding="utf-8" ?><nodes> <node> ...