BZOJ 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场
Description
大雨侵袭了奶牛们的牧场.牧场是一个R * C的矩形,其中1≤R,C≤50.大雨将没有长草的土地弄得泥泞不堪,可是小心的奶牛们不想在吃草的时候弄脏她们的蹄子. 为了防止她们的蹄子被弄脏,约翰决定在泥泞的牧场里放置一些木板.每一块木板的宽度为1个单位,长度任意.每一个板必须放置在平行于牧场的泥地里. 约翰想使用最少的木板覆盖所有的泥地.一个木板可以重叠在另一个木板上,但是不能放在草地上.
Input
第1行:两个整数R和C.
第2到R+1行:每行C个字符,其中“*’代表泥地,“.”代表草地.
Output
最少需要多少木板.
题解:
•不能盖住好地,那么宽为1的木板只能放在行、列连通块里。
•所以行、列连通块对应左、右部中的点,泥地对应边。
•求二分图最小覆盖就是答案。
二分图最小点覆盖==最大匹配
代码:
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- //by zrt
- //problem:
- using namespace std;
- typedef long long ll;
- const double eps(1e-10);
- int R,C,n;
- char s[60][60];
- int link[1005];
- int cover[1005];
- int H[1005],X[1000050],P[1000050],tot;
- inline void add(int x,int y){
- P[++tot]=y;X[tot]=H[x];H[x]=tot;
- }
- bool find(int x){
- for(int i=H[x];i;i=X[i]){
- if(cover[P[i]]) continue;
- cover[P[i]]=1;
- int q=link[P[i]];
- link[P[i]]=x;
- if(q==-1||find(q)) return 1;
- link[P[i]]=q;
- }
- return 0;
- }
- int xn,yn;
- int a[60][60],b[60][60];
- int main(){
- #ifdef LOCAL
- freopen("in.txt","r",stdin);
- freopen("out.txt","w",stdout);
- #endif
- memset(link,-1,sizeof link);
- scanf("%d%d",&R,&C);
- for(int i=0;i<R;i++){
- scanf("%s",s[i]);
- }
- for(int i=0;i<R;i++){
- for(int j=0;j<C;j++){
- if(s[i][j]=='*'){
- if(j>0&&s[i][j-1]=='*'){
- a[i][j]=a[i][j-1];
- }else a[i][j]=++yn;
- if(i>0&&s[i-1][j]=='*'){
- b[i][j]=b[i-1][j];
- }else b[i][j]=++xn;
- }
- }
- }
- for(int i=0;i<R;i++){
- for(int j=0;j<C;j++){
- if(s[i][j]=='*'){
- add(a[i][j],b[i][j]);
- }
- }
- }
- n=yn;
- int ans(0);
- for(int i=1;i<=n;i++){
- memset(cover,0,sizeof cover);
- if(find(i)) ans++;
- }
- printf("%d\n",ans);
- return 0;
- }
BZOJ 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场的更多相关文章
- bzoj 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 最小点覆盖
链接 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 思路 这就是个上一篇的稍微麻烦版(是变脸版,其实没麻烦) 用边长为1的模板覆盖地图上的没有长草的土地,不能覆盖草地 ...
- [Usaco2005 Jan]Muddy Fields泥泞的牧场
Description 雨连续不断的击打了放牛的牧场,一个R行C列的格子(1<=R<=50,1<=C<=50).虽然这对草来说是件好事,但这却使得一些没有草遮盖的土地变得很泥泞 ...
- bzoj1735 [Usaco2005 jan]Muddy Fields 泥泞的牧场
传送门 分析 我们知道对于没有障碍的情况就是将横轴点于纵轴点连边 于是对于这种有障碍的情况我们还是分横轴纵轴考虑 只不过对于有障碍的一整条分为若干个无障碍小段来处理 然后将标号小段连边,跑最大匹配即可 ...
- bzoj 1689: [Usaco2005 Open] Muddy roads 泥泞的路
1689: [Usaco2005 Open] Muddy roads 泥泞的路 Description Farmer John has a problem: the dirt road from hi ...
- POJ Muddy Fields 泥泞的牧场 二分图
Muddy Fields Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13235 Accepted: 4879 汪星人 ...
- bzoj 1689: [Usaco2005 Open] Muddy roads 泥泞的路【贪心】
按左端点排序,贪心的选即可 #include<iostream> #include<cstdio> #include<algorithm> using namesp ...
- bzoj1689 / P1589 [Usaco2005 Open] Muddy roads 泥泞的路
P1589 [Usaco2005 Open] Muddy roads 泥泞的路 简单的模拟题. 给水坑排个序,蓝后贪心放板子. 注意边界细节. #include<iostream> #in ...
- BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )
完全背包.. --------------------------------------------------------------------------------------- #incl ...
- BZOJ 1679: [Usaco2005 Jan]Moo Volume 牛的呼声( )
一开始直接 O( n² ) 暴力..结果就 A 了... USACO 数据是有多弱 = = 先sort , 然后自己再YY一下就能想出来...具体看code --------------------- ...
随机推荐
- 在orangepi-PC, ubuntu mini下使用usb wifi(rtl8188cu/rtl8192cu)
本文章针对orangepi-pc下的ubuntu,分两部分,分别介绍在ubuntu14.04(trusty)mini下使用usb无线网卡的方式,以及怎样在ubuntu15.10(wily)mini下正 ...
- HTML5规范的本地存储
在HTML5 中定义了两种本地存储的,Web Storage 和本地数据库 SQL Database . 用来检查判断浏览器是否支持 Web Storage if(window.localStorag ...
- scala学习笔记:理解stream和view
先来个正常的: scala> (0 to 5).map((x:Int)=>{println(x);x*2}).foreach(println) 0 1 2 3 4 5 0 2 4 6 8 ...
- ASP连接11种数据库的常用语法
1.Access数据库的DSN-less连接方法: 以下为引用的内容: set adocon=Server.Createobject("adodb.connection") ado ...
- Cordova+angularjs+ionic+vs2015开发(一)
欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.Windows环境配置 1.如果已经安装VS2015,打开[工具]-[选项]找到Cordova选 ...
- ubuntu 12.04 lts安装golang并设置vim语法高亮
安装golang sudo apt-get install golang 设置vim语法高亮 sudo apt-get install vim-gocomplete gocode vim-syntax ...
- oninput和onpropertychange
时常会有监听输入框输入的场景,比如新浪微博的发微博输入框: 还有边输入边提示: 以及form表单边输入边验证,当内容为空提示或者改变输入框的样式达到提示效果. 在IE中是onpropertychang ...
- 373. Find K Pairs with Smallest Sums
You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. 给你两个数组n ...
- STL的简介
Standard Template Library,(标准模板库)<来自百度百科的整理> ————可复用性(reusability) STL是基于模板,内联函数的使用使得生成的代码短小高效 ...
- Eclipse配置CAS server
1.下载cas server的源码包(我使用的是cas-server-3.5.2.1-release.zip) 2.解压压缩包到某个目录下,找到cas-server-3.5.2.1-release.z ...