洛谷P1514 引水入城(深搜,贪心)
来源:互联网 发布:上证综合指数季度数据 编辑:程序博客网 时间:2024/04/25 16:07
洛谷P1514 引水入城(深搜,贪心)
题目描述
在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设施有两种,分别为蓄水厂和输水站。蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中。
因此,只有与湖泊毗邻的第1 行的城市可以建造蓄水厂。而输水站的功能则是通过输水管线利用高度落差,将湖水从高处向低处输送。故一座城市能建造输水站的前提,是存在比它海拔更高且拥有公共边的相邻城市,已经建有水利设施。由于第N 行的城市靠近沙漠,是该国的干旱区,所以要求其中的每座城市都建有水利设施。那么,这个要求能否满足呢?如果能,请计算最少建造几个蓄水厂;如果不能,求干旱区中不可能建有水利设施的城市数目。
输入输出格式
输入格式:
输入文件的每行中两个数之间用一个空格隔开。输入的第一行是两个正整数N 和M,表示矩形的规模。接下来N 行,每行M 个正整数,依次代表每座城市的海拔高度。输出格式:
输出有两行。如果能满足要求,输出的第一行是整数1,第二行是一个整数,代表最少建造几个蓄水厂;如果不能满足要求,输出的第一行是整数0,第二行是一个整数,代表有几座干旱区中的城市不可能建有水利设施。输入输出样例
【输入样例1】
2 59 1 5 4 3
8 7 6 1 2
【输入样例2】
3 68 4 5 6 4 4
7 3 4 3 3 3
3 2 2 1 1 2
【输出样例1】
11
【输出样例2】
13
说明
【样例1 说明】只需要在海拔为9 的那座城市中建造蓄水厂,即可满足要求。
【样例2 说明】
上图中,在3 个粗线框出的城市中建造蓄水厂,可以满足要求。以这3 个蓄水厂为源头
在干旱区中建造的输水站分别用3 种颜色标出。当然,建造方法可能不唯一。
【数据范围】
解题分析
首先构建图,将所有城市与其四周高度比它低的城市之间添加一条有向边。从第一行的入度为0的城市出发进行深搜,在深搜过程中需要记录两个数据:used[i][j]表示城市(i, j)有没有访问过,vis[i][j]表示从城市(i, j)出发所能覆盖干旱区的区间。通过记忆化搜索方法搜索。
当搜索完之后,如果有干旱区城市的used为0,则这些城市不可能见水利设施。
如果干旱区的城市都可以建水利设施,则从第一行的某个城市出发所能覆盖干旱区的城市一定是一个连续的区域(即在前面所求的的区间,可以通过反证法证明,这里不再赘述),因此只要判断至少需要几个区间能覆盖所有的干旱区的城市,可以用贪心法实现。
#include#include #include #include #include #include #include using namespace std;#define INF 0x7fffffff#define N 502int n, m, city[N][N], indegree[N][N] = {0};int cnt = 0, dir[4][2]={{1,0}, {-1, 0}, {0, 1}, {0, -1}};struct point{int x;int y;};struct node{point to[4];int to_size;node():to_size(0){}void add(int x, int y){to[to_size].x = x;to[to_size].y = y;to_size++;indegree[x][y]++;}}e[N][N];struct node1{int left;int right;node1():left(INF), right(-1){}}vis[N][N], vis1[N];int used[N][N];void get_i(int &x){char ch = getchar();x = 0;while(!isdigit(ch)) ch = getchar();while(isdigit(ch)){x = x * 10 + ch - '0';ch = getchar();}}bool cmp(node1 n1, node1 n2){if(n1.left != n2.left)return n1.left < n2.left;return n1.right > n2.right;}void dfs(int x, int y){int i, to_x, to_y;node n1 = e[x][y];for(i=0; i =0 && di =0 && dj city[di][dj])e[i][j].add(di, dj);}}}for(i=0; i
阅读全文
0 0
- 洛谷P1514 引水入城(深搜,贪心)
- 洛谷 P1514 引水入城
- 洛谷 P1514 引水入城
- 洛谷 P1514 引水入城
- 洛谷 P1514 引水入城
- 洛谷 P1514 引水入城
- 洛谷P1514 引水入城
- |洛谷|NOIP2010|搜索|贪心|P1514 引水入城
- P1514 引水入城
- P1514 引水入城
- P1514 引水入城
- 【P1514】引水入城
- P1514 引水入城
- 引水入城(dfs的做法)洛谷p1514
- 洛谷 P1514 [NOIP2010 T4] 引水入城
- 洛谷——P1514 引水入城
- 再A一遍 洛谷P1514 引水入城
- 引水入城 洛谷 1514 bfs 贪心
- 多线程的简介及方法
- 百度地图---dlopen failed: "/data/data/com.zoommax.car/files/libs/libBaiduMapSDK_base_v4_2_1.so" is 32-bi
- 实体忘记close就无法选择
- MySQL数据库导入BIN格式定长文件
- TCP服务器编程步骤
- 洛谷P1514 引水入城(深搜,贪心)
- Web开发之用canvas2image.js将canvas保存为图片(实现页面截图下载功能)
- 学习资源
- 数据源不定时间段后连接中断(解决方法:连接关闭后设置自启动,重新自动连接;Jboss异常:SQL Error 17002和SQL Error 17008
- 掌握那么多Word技巧有什么用?还不如掌握这几个比较实在!
- codeforces 864A 之 Fair Game
- 《Spring技术内幕》学习笔记6——IoC容器的高级特性
- Qt5 QToolTip 背景色 背景样式
- spring security起步二:自定义登录页
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
手机开店软件哪个好
女生开店卖什么好
etsy开店流程
适合女生创业的项目
开一个咖啡店需要多少钱
开咖啡馆
开咖啡店需要哪些条件
熟食连锁店
咖啡店投资预算
汽车行业创业项目
开连锁店项目
开个什么店好
年轻人怎么创业
30万可以做什么生意
农业致富项目
开业流程
乡村致富项目
创新创业政策
有车做什么生意好
致富小生意
学什么可以自己开店
拼多多回应三只松鼠未开店
首开金茂府价格暴跌
地府我开的
经开正荣府
首开熙悦睿府书香
首开金茂府
首开杭州金茂府
融创金开融府
万科金开悦府
开度h塞笔
开度宿舍h
梅开四度全文阅读
婚开二度
空调开28度会比26度省钱吗
电梯老人梅开2度
屋里空调开30度都不热
冬天冰箱开多少度合适
空调冬天开多少度
春风二度桃花开
空调开26度一晚耗电多少度