这道题 解决第一问 用灌水法 枚举第一行的每一个点 查找是否最后一行的每一个点是否都能灌到水
第二问 用反灌水发 枚举最后一行的每一个点 解决第一行每一个点所能覆盖的左右端点 可以证明每个点所能覆盖的点是连续的一条线段 (反证法)
tips 数组是可以直接被调用 在函数中修改可以直接修改原数组
 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
int n,m,qx[M*M],qy[M*M],xi[]={,,,,-},yi[]={,,,-,};
int map[M][M],l[M][M],a[M][M],r[M][M];
struct node{int l,r;}e[M];
int cmp(node a,node b){return a.l==b.l?a.r>b.r:a.l<b.l;}
int read(){
int ans=,f=; int c=getchar();
while(c<''||c>'') {if(c=='-') f=-; c=getchar();}
while(c>=''&&c<='') {ans=ans*+(c-''); c=getchar();}
return ans*f;
}
void bfs(int b[M][M],int nx,int ny,int v,int f){
int head=,tail=; qx[]=nx; qy[]=ny; b[nx][ny]=v;
while(head!=tail){
int x=qx[head],y=qy[head]; head++;
for(int i=;i<=;i++){
int sx=x+xi[i],sy=y+yi[i];
if(sx<||sy<||sx>n||sy>m||b[sx][sy]) continue;
if(!f&&a[sx][sy]>=a[x][y]) continue;
if(f&&a[sx][sy]<=a[x][y]) continue;
b[sx][sy]=v; qx[tail]=sx; qy[tail]=sy; tail++;
}
}
}
int main()
{
n=read(); m=read();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
a[i][j]=read();
for(int i=;i<=m;i++) if(!map[][i]) bfs(map,,i,,);
int tot=; for(int i=;i<=m;i++) if(!map[n][i]) tot++;
if(tot){
printf("0\n%d\n",tot);
return ;
}
for(int i=;i<=m;i++) if(!l[n][i]) bfs(l,n,i,i,);
for(int i=m;i>=;i--) if(!r[n][i]) bfs(r,n,i,i,);
for(int i=;i<=m;i++){
if(!l[][i]) l[][i]=r[][i];
if(!r[][i]) r[][i]=l[][i];
e[i].l=l[][i]; e[i].r=r[][i];
}
sort(e+,e++m,cmp);
int to=,now=;
for(int i=;i<=m;i++){
if(now+>=e[i].l) to=max(to,e[i].r);
else now=to,to=max(e[i].r,to),tot++;
}
if(now!=m) tot++;
printf("1\n%d\n",tot);
return ;
}

codevs1066&&noip引水入城的更多相关文章

  1. NOIP引水入城(dfs)

    为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施.水利设施有两种,分别为蓄水厂和输水站.蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中. 因此,只有与湖泊毗邻的第1 行的 ...

  2. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

  3. 引水入城 2010年NOIP全国联赛提高组(bfs+贪心)

    1066 引水入城 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在一个遥远 ...

  4. CODEVS 1066/洛谷 P1514引水入城

    1066 引水入城 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 在一个遥远的国 ...

  5. 洛谷P1514 引水入城

    洛谷P1514 引水入城 原题链接 一道好题...细节真多 第一次提交90分,然后就GG了,不知从何改起 其实比较简单吧... 首先,一个点的水流向最后一排,一定可以形成一个区间. 不行的话肯定GG ...

  6. NOIP2010 引水入城

    4引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个 ...

  7. Luogu 1514 引水入城 (搜索,动态规划)

    Luogu 1514 引水入城 (搜索,动态规划) Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N行M列的矩形,如上图 ...

  8. CCF CSP 201703-5 引水入城(50分)

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-5 引水入城 问题描述 MF城建立在一片高原上.由于城市唯一的水源是位于河谷地带的 ...

  9. 洛谷 P1514 引水入城 解题报告

    P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 NN 行 \times M×M 列的矩形,如上图所示,其中每个格 ...

随机推荐

  1. linux下php环境配置

    参: http://www.laozuo.org/5542.html LAMP,基于Linux/Apache/MySQL/PHP架构的网站建设环境,对于一般的网站来说足够使用,如果我们的网站访问量或者 ...

  2. LintCode-212.空格替换

    空格替换 设计一种方法,将一个字符串中的所有空格替换成 %20 .你可以假设该字符串有足够的空间来加入新的字符,且你得到的是"真实的"字符长度. 你的程序还需要返回被替换后的字符串 ...

  3. 【OSG】 报错:丢失osg100-osgDB.dll

    如果你bin目录已经添加到了环境变量的path里面,还报这个错的话. 或许你重启一下电脑就可以了..我就这么解决的.

  4. PAT 甲级 1032 Sharing

    https://pintia.cn/problem-sets/994805342720868352/problems/994805460652113920 To store English words ...

  5. ibatsi学习总结

    学习来源:黑马程序员 先总结一下遇到的问题 问题1:1,resultMap 可以不写,比如配置1 配置1: <typeAlias alias="puser" type=&qu ...

  6. ICE checkbox 用法

    Hello everybody, I have a datable which contain multiple lines gotten from database, in the header o ...

  7. js 复制到剪贴板 兼容还得自己想办法

    clipboard.js https://github.com/zenorocha/clipboard.js/ 主要问题还是ie8, 可以使用ie 特有的方法 if (window.clipboard ...

  8. 如何提升集群资源利用率? 阿里容器调度系统Sigma 深入解析

    阿里妹导读:为了保证系统的在线交易服务顺利运转,最初几年,阿里都是在双11大促来临之前大量采购机器储备计算资源,导致了双11之后资源大量闲置点现象.是否能把计算任务与在线服务进行混合部署,在现有弹性资 ...

  9. POJ2079:Triangle——题解

    http://poj.org/problem?id=2079 题目大意:求最大面积的三角形. —————————————————— 可以知道,最大面积的三角形的顶点一定是最大凸包的顶点. 接下来就是O ...

  10. POJ2987:Firing——题解

    http://poj.org/problem?id=2987 题目大意: 炒掉一个人能够获得b收益(b可以<0),但是炒掉一个人必须得炒掉他的下属(然后继续递归). 求最大收益和此时最小裁员. ...