题目描述

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

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

因此,只有与湖泊毗邻的第1 行的城市可以建造蓄水厂。而输水站的功能则是通过输水管线利用高度落差,将湖水从高处向低处输送。故一座城市能建造输水站的前提,是存在比它海拔更高且拥有公共边的相邻城市,已经建有水利设施。由于第N 行的城市靠近沙漠,是该国的干旱区,所以要求其中的每座城市都建有水利设施。那么,这个要求能否满足呢?如果能,请计算最少建造几个蓄水厂;如果不能,求干旱区中不可能建有水利设施的城市数目。

输入输出格式

输入格式:

输入文件的每行中两个数之间用一个空格隔开。输入的第一行是两个正整数N 和M,表示矩形的规模。接下来N 行,每行M 个正整数,依次代表每座城市的海拔高度。

输出格式:

输出有两行。如果能满足要求,输出的第一行是整数1,第二行是一个整数,代表最少建造几个蓄水厂;如果不能满足要求,输出的第一行是整数0,第二行是一个整数,代表有几座干旱区中的城市不可能建有水利设施。

输入输出样例

输入样例#1:

【输入样例1】
2 5
9 1 5 4 3
8 7 6 1 2【输入样例2】
3 6
8 4 5 6 4 4
7 3 4 3 3 3
3 2 2 1 1 2

输出样例#1:

【输出样例1】
1
1【输出样例2】
1
3

看了几个题解,搜索判断是否能覆盖所有干旱区域,贪心+动态规划找出最少需要几个抽水站。犯了一个很严重的审题错误,误把所有的城市视作干旱区域。想了一个很low的贪心,将第一行从高到低开始深搜建立抽水站,到全覆盖需要几个抽水站,贪了40分。
炒了个题解http://blog.csdn.net/loi__dijiang/article/details/49000357,发现他只能得90分。又通过看题解发现搜索一次的通病就是第六个点不过,于是又修改了先搜索一次,回答第一问,再搜索一次,回答第二问。可能是因为这个点正好是个找不到的店,提前rentun了,题目中如果城市的连通度大,时间复杂度到500*500*500,就超时拉。
参考代码:

#include<iostream>
#include<algorithm>
#include<cstring>using namespace std;
struct factory{int l,r;
}p[501];int n,m,map[501][501],f[501],cnt=0,cun=0;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};bool vis[501][501]={0},ans[501]={0};/*
bool comp(const factory &a,const factory &b)
{return a.l<b.l;
}
*/
void dfs(int x,int y,int ori)
{   if(x==m&&vis[m][y]==0) cun++;vis[x][y]=1;if(cun==n)return;if(x==m){ans[y]=1;p[ori].l=min(p[ori].l,y);p[ori].r=max(p[ori].r,y);}for(int i=0;i<4;i++){int dx=x+dir[i][0],dy=y+dir[i][1];if(dx<1||dx>m||dy<1||dy>n)continue;if(map[dx][dy]<map[x][y]&&!vis[dx][dy])dfs(dx,dy,ori);}}int main()
{cin>>m>>n;for(int i=1;i<=n;++i)p[i].l=f[i]=300000;f[0]=0;for(int i=1;i<=m;++i)for(int j=1;j<=n;++j)cin>>map[i][j];for(int i=1;i<=n;++i){if(vis[1][i]==0)dfs(1,i,i);//memset(vis,0,sizeof(vis));}if(cun<n){if(cnt)cout<<0<<endl<<n-cun;return 0;}for(int i=1;i<=n;++i){memset(vis,0,sizeof(vis));cun=0;dfs(1,i,i);} for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){if(i>=p[j].l&&i<=p[j].r)f[i]=min(f[i],f[p[j].l-1]+1);}
     cout<<1<<endl<<f[n];
 return 0;}


noip2010引水入城-搜索+贪心相关推荐

  1. luogu1514 [NOIp2010]引水入城 (bfs+记忆化搜索)

    我们先bfs一下看看是否能到最底下的所有点 如果不能的话,直接把不能到的那几个数一数就行了 如果能的话: 可以发现(并不可以)某格能到达的最底下的格子一定是一个连续的区间 (因为如果不连续的话,我们先 ...

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

    Codevs 1066 引水入城 题目上没有给出样例二,只给出了样例二的图,真是奇怪(丧心病狂). Input2: 3 6 8 4 5 6 4 4 7 3 4 3 3 3 3 2 2 1 1 2 Ou ...

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

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

  4. codevs 1066 引水入城(DFS+DP)

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

  5. NOIP 2010 引水入城

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

  6. CCF201703-5 引水入城(100分题解链接)

    试题编号: 201703-5 试题名称: 引水入城 时间限制: 2.0s 内存限制: 512.0MB 问题描述: 问题描述 MF城建立在一片高原上.由于城市唯一的水源是位于河谷地带的湖中,人们在坡地上 ...

  7. 【NOIP2010】引水入城

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

  8. P1514 引水入城

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

  9. 引水入城(dfs的做法)洛谷p1514

    在这道题中, 由于每个点所能到达的地方是一定的,并且若底层能够填满,那么到达底层的位置一定 所以我们可以把每个点所到达的最底层记录下来,若访问到某一之前到达过的点,直接用这个点所到达的底层的点更新即可 ...

最新文章

  1. 关于WinForm的博客推荐
  2. OSPF详解-2 区域结构
  3. Zxing二维码的集成使用
  4. 活用这23种图表,让你的数据分析胜人一筹 | 推荐收藏
  5. 图文列表+富文本解析+折线图示例小程序模板
  6. 《剑指 Offer I》刷题笔记 41 ~ 50 题
  7. apache 网站转nginx_堡塔网站加速宝塔面板网站加速安装设置使用教程
  8. View的事件分发机制
  9. 医院科室管理系统(IDEA开发)
  10. 23年哪些企业不能申报高企
  11. WCF---关于无法使用以下搜索标准找到 X.509 证书的问题
  12. 关于git的commit提交回退的三种命令模式
  13. pythonpost请求修改编码格式_Python请求编码POST d
  14. python中类的首字母一定得大写吗_Python学习
  15. Python下载小说遮天
  16. 洗衣机水位传感器原理:检测水位频率
  17. android 11.0app应用卸载白名单
  18. docker-compose links depend on 使用的两种方式
  19. 【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )
  20. 你有22款高逼格免费字体请下载!

热门文章

  1. Oracle那些年那些事儿
  2. (文献随笔)关于乳腺癌脑转移文献合集(一)
  3. 服务器修改盘的盘序,黑群辉改sata控制器识别接口数、硬盘盘序的经验总结
  4. 网易相册找回服务器,再见了,网易相册!24日起关闭服务器,不保留数据
  5. 网络推广方式有哪些,网络推广哪个平台好?
  6. php5.5.18 32位 php apache2_4.dll,WinXP环境下安装Apache2.2.3 php5.2.0 Mysql5.0.18 phpMyAd
  7. Launcher3如何实现主菜单背景的透明度调整
  8. 五点三次平滑法滤波 C 和 matlab代码
  9. 大连外国语大学linux主机名,大连外国语大学
  10. 在html中加入pdf文件吗,如何在网页中显示PDF文件