n<=500 *n的格子,给m<=10000个格子有人,一炮可以清掉一行或一列的人(莫名的爽!)求最少几炮干掉所有人。

经典二分图模型!行成点,列成点,一个点就连接一行一列,表示这一行或这一列必选其一!

不喜欢匈牙利!跑网络流!

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 #include<iostream>
 6 using namespace std;
 7
 8 int n,m;
 9 #define maxn 1011
10 #define maxm 22011
11 struct Edge{int to,next,cap,flow;};
12 const int inf=0x3f3f3f3f;
13 struct Network
14 {
15     Edge edge[maxm];int first[maxn],le,n,s,t;
16     void clear(int n)
17     {
18         memset(first,0,sizeof(first));
19         le=2;this->n=n;
20     }
21     void in(int x,int y,int cap)
22     {
23         Edge &e=edge[le];
24         e.to=y;e.cap=cap;e.flow=0;
25         e.next=first[x];first[x]=le++;
26     }
27     void insert(int x,int y,int cap) {in(x,y,cap);in(y,x,0);}
28     int dis[maxn],cur[maxn],que[maxn],head,tail;
29     bool bfs()
30     {
31         memset(dis,0,sizeof(dis));
32         dis[s]=1;
33         que[head=(tail=1)-1]=s;
34         while (head!=tail)
35         {
36             const int now=que[head++];
37             for (int i=first[now];i;i=edge[i].next)
38             {
39                 Edge &e=edge[i];
40                 if (e.cap>e.flow && !dis[e.to])
41                 {
42                     dis[e.to]=dis[now]+1;
43                     que[tail++]=e.to;
44                 }
45             }
46         }
47         return dis[t];
48     }
49     int dfs(int x,int a)
50     {
51         if (x==t || !a) return a;
52         int flow=0,f;
53         for (int &i=cur[x];i;i=edge[i].next)
54         {
55             Edge &e=edge[i];
56             if (dis[e.to]==dis[x]+1 && (f=dfs(e.to,min(a,e.cap-e.flow)))>0)
57             {
58                 e.flow+=f;
59                 edge[i^1].flow-=f;
60                 a-=f;
61                 flow+=f;
62                 if (!a) break;
63             }
64         }
65         return flow;
66     }
67     int Dinic(int s,int t)
68     {
69         this->s=s,this->t=t;
70         int ans=0;
71         while (bfs())
72         {
73             for (int i=1;i<=n;i++) cur[i]=first[i];
74             ans+=dfs(s,inf);
75         }
76         return ans;
77     }
78 }g;
79 int x,y;
80 int main()
81 {
82     scanf("%d%d",&n,&m);
83     g.clear(n*2+2);
84     int s=g.n-1,t=g.n;
85     for (int i=1;i<=n;i++) g.insert(s,i,1);
86     for (int i=n+1;i<=n*2;i++) g.insert(i,t,1);
87     for (int i=1;i<=m;i++)
88     {
89         scanf("%d%d",&x,&y);
90         g.insert(x,y+n,1);
91     }
92     printf("%d\n",g.Dinic(s,t));
93     return 0;
94 }

View Code

转载于:https://www.cnblogs.com/Blue233333/p/7482029.html

BZOJ1693: [Usaco2007 Demo]Asteroids相关推荐

  1. [Usaco2007 Demo][BZOJ1628] City skyline

    1628: [Usaco2007 Demo]City skyline Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 320  Solved: 260 [ ...

  2. bzoj 1628 1683: [Usaco2007 Demo]City skyline(模拟)

    1628: [Usaco2007 Demo]City skyline Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 558  Solved: 435 [ ...

  3. BZOJ1695 : [Usaco2007 Demo]Walk the Talk

    观察单词表可以发现: 对于长度为3的单词,前两个字母相同的单词不超过7个 对于长度为4的单词,前两个字母相同的单词不超过35个 于是首先$O(26*26*nm)$预处理出 s1[x][i][j]表示( ...

  4. 【BZOJ】1630: [Usaco2007 Demo]Ant Counting(裸dp/dp/生成函数)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1630 题意,给你n种数,数量为m个,求所有的数组成的集合选长度l-r的个数 后两者待会写.. 裸dp ...

  5. [Usaco2007 Demo]City skyline

    Description Input 第一行给出NN,WW 第二行到第N+1N+1行:每行给出二个整数x,yx,y,输入的xx严格递增,并且第一个xx总是11 Output 输出一个整数,表示城市中最少 ...

  6. 3140: [Hnoi2013]消毒

    首先要知道一次打掉一个1*x*y的面是最优的.证明太简单所以略. 然后看这道题的二维版本:bzoj1693 [Usaco2007 Demo]Asteroids   http://www.lydsy.c ...

  7. jquery autocomplete demo

    根据用户输入值进行搜索和过滤,让用户快速找到并从预设值列表中选择. jquery.autocomplete参考地址 http://bassistance.de/jquery-plugins/jquer ...

  8. BERT-Pytorch demo初探

    https://zhuanlan.zhihu.com/p/50773178 概述 本文基于 pytorch-pretrained-BERT(huggingface)版本的复现,探究如下几个问题: py ...

  9. MinkowskiEngine demo ModelNet40分类

    MinkowskiEngine demo ModelNet40分类 本文将看一个简单的演示示例,该示例训练用于分类的3D卷积神经网络.输入是稀疏张量,卷积也定义在稀疏张量上.该网络是以下体系结构的扩展 ...

最新文章

  1. torch维度获取数据详解
  2. For与Function进阶实战、Lazy的使用笔记总结
  3. LeetCode----9. 回文数
  4. libevent源码学习-----时间管理
  5. VS2008操作PPT
  6. MVP小白入门,只需5步
  7. 获取Kubernetes容器上下文环境
  8. 【hadoop各个节点的意思】
  9. jquery实现章节目录效果
  10. 魔方机器人设计中的问题
  11. macOS IKPictureTaker 图片选择器
  12. 网络拓扑结构_全球网络拓扑测绘这样来实现
  13. 自己DIY一个pinephone——debian与主线linux在红米2(msm8916)上的移植
  14. Java-List常用方法
  15. CBinsight重磅报告 | 如何从谷歌亚马逊苹果微软脸书的9年专利之争,看5大巨头在AI行业的未来10年之争
  16. Windows认证机制详解(借物表在文章末尾)
  17. 安卓关于健身的代码_亲子运动健身新玩法,娱乐享瘦两不误,让孩子不再沉迷电子产品...
  18. 在x64上构建智能家居(home assistant) (三) 功能介绍 addons,hacs安装
  19. 关于分贝dB的理解与电子学的关系
  20. 二维三维图纸web在线预览

热门文章

  1. php文件管理器工具,八年PHP文件管理器
  2. matlab敏感词输出代码,敏感词设置
  3. c++生成光栅条纹程序_【光学学报】激光分束,自由曲面分束器能挑战相位光栅吗?...
  4. python爬虫常见报错_Python爬虫常见HTTP响应状态码详解
  5. 华为抢购助手_华为MateBook 13轻薄本:出差者的首选,学生党的福音
  6. 【Nginx】截取URL中某个参数Parameter
  7. windows下使用svn命令行
  8. 【sprinb-boot】Junit测试
  9. mybatis报错解决办法 :Result Maps collection does not contain value for java.lang.String
  10. php linux下保存文件路径怎么写,linux下php导入带图片的word文档转为html,图片保存下来生成路径。...