BZOJ[2044]三维导弹拦截 匈牙利算法
2018-02-10 17:34
393 查看
传送门ber~
对于问题一,对x排序,n2n2暴力就可以
对于问题二,将一个点对所有能接着走的点(x,y,zx,y,z均比自己大)连边,再跑最小路径覆盖就
最小路径覆盖可以用匈牙利算法
代码如下:
对于问题一,对x排序,n2n2暴力就可以
对于问题二,将一个点对所有能接着走的点(x,y,zx,y,z均比自己大)连边,再跑最小路径覆盖就
最小路径覆盖可以用匈牙利算法
代码如下:
#include<algorithm> #include<ctype.h> #include<cstring> #include<cstdio> #define N 1050 using namespace std; inline int read(){ int x=0,f=1;char c; do c=getchar(),f=c=='-'?-1:f; while(!isdigit(c)); do x=(x<<3)+(x<<1)+c-'0',c=getchar(); while(isdigit(c)); return x*f; } struct Data{ int x,y,z; }a ; int n,ans,Timer,top; int match ,tim ,fir ,f ; struct Edge{ int to,nex; Edge(int _=0,int __=0):to(_),nex(__){} }nex[N*N]; inline void add(int x,int y){ nex[++top]=Edge(y,fir[x]); fir[x]=top; } inline bool cmp(Data a,Data b){ return a.x<b.x; } bool Hungary(int x){ for(int i=fir[x];i;i=nex[i].nex) if(tim[nex[i].to]!=Timer){ tim[nex[i].to]=Timer; if(!match[nex[i].to] || Hungary(match[nex[i].to])){ match[nex[i].to]=x; return true; } } return false; } int main(){ n=read(); for(int i=1;i<=n;i++){ a[i].x=read();a[i].y=read();a[i].z=read(); } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ f[i]=1; for(int j=1;j<i;j++) if(a[j].x<a[i].x && a[j].y<a[i].y && a[j].z<a[i].z) f[i]=max(f[i],f[j]+1),add(j,i); ans=max(ans,f[i]); } printf("%d\n",ans); ans=0; for(int i=1;i<=n;i++){ ++Timer; if(Hungary(i)) ans++; } printf("%d",n-ans); return 0; }
相关文章推荐
- [DP 匈牙利 最小链覆盖] BZOJ 2044 三维导弹拦截 & 计蒜客 271 拦截导弹
- bzoj 2044三维导弹拦截 二分图匹配
- 【BZOJ2044】三维导弹拦截 DP+(有上下界的)网络流
- bzoj2044: 三维导弹拦截
- BZOJ 3168 Heoi2013 钙铁锌硒维生素 矩阵求逆+匈牙利算法
- bzoj 2244: [SDOI2011]拦截导弹
- 2017年9月16日提高组T2 B 三维导弹拦截
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- bzoj 1191: [HNOI2006]超级英雄Hero 并查集 || 匈牙利算法
- 【bzoj 1854】[Scoi2010]游戏(匈牙利算法)
- java实现算法设计之导弹拦截
- bzoj 4622: [NOI 2003] 智破连环阵【dfs+匈牙利算法】
- [BZOJ1191][HNOI2006][二分图匹配][匈牙利算法]超级英雄hero
- BZOJ 1562([NOI2009]变换序列-匈牙利算法)
- bzoj 1191超级英雄Hero|匈牙利算法|水题
- BZOJ[1191][HNOI2006]超级英雄Hero 匈牙利算法
- [BZOJ2244][SDOI2011]拦截导弹
- bzoj2744 [HEOI2012]朋友圈 ( 二分图最大团转补图最大独立集+时间戳优化+匈牙利算法)
- bzoj 2244: [SDOI2011]拦截导弹 cdq分治
- BZOJ 1191 超级英雄hero(二分图匹配,匈牙利算法)