HNOI 2013 bzoj 3140 消毒
来源:互联网 发布:怎么关闭软件自动更新 编辑:程序博客网 时间:2024/04/28 22:00
暴力一维,剩下两维做一个最小点覆盖
要注意memset的复杂度问题!
/************************************************************** Problem: 3140 User: Clare Language: C++ Result: Accepted Time:1160 ms Memory:1468 kb****************************************************************/ #include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <queue>#include <vector>using namespace std; #define N 5010#define INF 0x3f3f3f3f int a,b,c;int n,K,Ans,Vis_tot,cnt;int Left[N],Vis[N],C[22];struct Edge{ int to,next;}edge[N*2];int head[N],tot;struct Node{ int x,y,z;}A[N]; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();} return x*f;} void Addedge(int u,int v){ tot++;edge[tot].next=head[u];edge[tot].to=v;head[u]=tot;} bool Find(int x){ for(int i=head[x];i;i=edge[i].next) { int v=edge[i].to; if(Vis[v]!=Vis_tot) { Vis[v]=Vis_tot; if(!Left[v]||Find(Left[v])) { Left[v]=x; return true; } } } return false;} void Search(int k){ int Sum=0; for(int i=0;i<a;i++) if(k&C[i]) Sum++; if(Sum>=Ans) return; tot=0; for(int i=1;i<=b;i++) head[i]=0; for(int i=1;i<=c;i++) Left[i]=0; for(int i=1;i<=cnt;i++) { if(!(k&C[A[i].x-1])) Addedge(A[i].y,A[i].z); } for(int i=1;i<=b;i++) { Vis_tot++; if(Find(i)) Sum++; if(Sum>=Ans) return; } Ans=Sum;} int main(){ C[0]=1; for(int i=1;i<=20;i++) C[i]=C[i-1]<<1; int T=read(); while(T--) { cnt=0; a=read();b=read();c=read(); for(int i=1;i<=a;i++) { for(int j=1;j<=b;j++) { for(int k=1;k<=c;k++) { int x=read(); if(x) A[++cnt]=(Node){i,j,k}; } } } if(a>b) { swap(a,b); for(int i=1;i<=cnt;i++) swap(A[i].x,A[i].y); } if(a>c) { swap(a,c); for(int i=1;i<=cnt;i++) swap(A[i].x,A[i].z); } Ans=INF; for(int i=0;i<C[a];i++) Search(i); printf("%d\n",Ans); } return 0;}
0 0
- HNOI 2013 bzoj 3140 消毒
- [省选前题目整理][BZOJ 3140][HNOI 2013]消毒(二分图最大匹配)
- 【BZOJ 3140】 [Hnoi2013]消毒
- BZOJ 3140 [HNOI2013]消毒
- BZOJ 3140: [Hnoi2013]消毒
- bzoj 3140: [Hnoi2013]消毒 dfs+网络流
- BZOJ 3144 HNOI 2013 切糕
- HNOI 2013 bzoj 3141 旅行
- HNOI 2013 bzoj 3143 游走
- HNOI 2013 bzoj 3142 数列
- HNOI 2013 bzoj 3144 切糕
- BZOJ 3144 HNOI 2013 切糕 最小割
- BZOJ 3140 消毒 (二进制枚举降维 二分图最大匹配)
- 【BZOJ 4538】【HNOI 2016】网络
- BZOJ 1218 HNOI 2003 激光炸弹 模拟
- BZOJ 1997 HNOI 2010 Planar 2-SAT
- [BZOJ 1196][HNOI 2006]公路修建问题
- BZOJ 1483 HNOI 2009 梦幻布丁
- TOEFL 学习笔记 (writing 7)
- java FileWritter,BufferedWriter 写入文件
- 自定义BaseAdapter,适配任意数据和布局
- uva 993 Product of digits
- CodeForces 50B Choosing Symbol Pairs
- HNOI 2013 bzoj 3140 消毒
- 转自啊哈磊--数组实现邻接表
- C++的头文件<iomanip>
- RAID在企业服务器中的应用(RAID几种级别)
- linux centos 6.7 gdb7.9.1 安装过程
- HDU 1556 Color the ball(树状数组区间更新)
- Linux软件安装管理
- thinkphp_3.1.2的CURD
- java注解理论概述