[Luogu] 引水入城
https://www.luogu.org/problemnew/show/P1514
bfs + 线段覆盖
#include<bits/stdc++.h> using namespace std; struct sea {
int h , num;
bool got;
} s[]; bool cmp( sea a , sea b ) {
return a.h > b.h;
} const int dir[][] = { { , } , { , - } , { , } , { - , } };
int ma[][] , n , m , ans , ct[];
bool built[];
queue<int> desert[]; void bfs( int start ) {
bool went[][] = { };
queue<pair<int , int> > q;
q.push( make_pair( , start ) );
if( n == ) {
desert[start].push( start );
ct[start]++;
}
while( !q.empty() ) {
pair<int , int> a = q.front();
q.pop();
for( int i = ; i < ; i++ ) {
pair<int , int> b = make_pair( a.first + dir[i][] , a.second + dir[i][] );
if( b.first >= && b.first < n && b.second >= && b.second < m && went[b.first][b.second] == && ma[b.first][b.second] < ma[a.first][a.second] ) {
q.push( b );
if( b.first == )
s[b.second].got = ;
if( b.first + == n ) {
desert[b.second].push( start );
ct[start]++;
}
went[b.first][b.second] = ;
}
}
}
} void greedy() {
int i = ;
while( i < m ) {
int maxnum = , maxn;
while( !desert[i].empty() ) {
ct[desert[i].front()]--;
if( ct[desert[i].front()] >= maxnum ) {
maxnum = ct[desert[i].front()];
maxn = desert[i].front();
}
desert[i].pop();
}
i++;
while( ct[maxn] > ) {
while( !desert[i].empty() ) {
ct[desert[i].front()]--;
desert[i].pop();
}
i++;
}
ans++;
}
} int main() {
cin >> n >> m;
for( int i = ; i < n ; i++ )
for( int j = ; j < m ; j++ )
cin >> ma[i][j];
for( int i = ; i < m ; i++ )
s[i].h = ma[][i] , s[i].num = i , s[i].got = ;
sort( s , s + m , cmp );
int p = ;
while( p < m ) {
if( !s[s[p].num].got )
bfs( s[p].num );
p++;
}
for( int i = ; i < m ; i++ )
if( desert[i].empty() )
ans++;
if( ans != ) {
cout << << '\n' << ans;
return ;
}
greedy();
cout << << '\n' << ans;
}
[Luogu] 引水入城的更多相关文章
- Luogu 1514 引水入城 (搜索,动态规划)
Luogu 1514 引水入城 (搜索,动态规划) Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N行M列的矩形,如上图 ...
- [luogu]P1514 引水入城[搜索][记忆化][DP]
[luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...
- 洛谷 P1514 【引水入城】
题库 :洛谷 题号 :1514 题目 :引水入城 link :https://www.luogu.org/problemnew/show/P1514 思路 :搜索从第一排开始能覆盖最后一排的区间L ~ ...
- NOIP2010 引水入城
4引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个 ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- CODEVS 1066/洛谷 P1514引水入城
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个遥远的国 ...
- CCF CSP 201703-5 引水入城(50分)
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-5 引水入城 问题描述 MF城建立在一片高原上.由于城市唯一的水源是位于河谷地带的 ...
- 洛谷P1514 引水入城
洛谷P1514 引水入城 原题链接 一道好题...细节真多 第一次提交90分,然后就GG了,不知从何改起 其实比较简单吧... 首先,一个点的水流向最后一排,一定可以形成一个区间. 不行的话肯定GG ...
- 洛谷 P1514 引水入城 解题报告
P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 NN 行 \times M×M 列的矩形,如上图所示,其中每个格 ...
随机推荐
- Laravel入门
一.下载Laravel ①github上下载 ②通过composer下载,推荐 第一步,选择你要在哪个目录下载Laravel,打开cmd 第二步,打开https://docs.golaravel.co ...
- Prometheus Operator 自动发现和持久化
Prometheus Operator 自动发现和持久化 之前在 Prometheus Operator 下面自定义一个监控选项,以及自定义报警规则的使用.那么我们还能够直接使用前面课程中的自动发现功 ...
- varnishlog、Varnishstat详解
Varnish将日志记录到共享内存片段,而不是记录到一个普通文件中.当记录到内存片段的最后处,会再从头开始记,覆写老数据.这比记录到文件要快的多,不需要磁盘空间.Varnishlog是一个用来查看Va ...
- _stscanf_s (sscanf)正则表达式
_stscanf_s (sscanf)正则表达式 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}, 注 ...
- 【原创】大叔经验分享(76)confluence和jira配置
一 下载 confluence https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-conf ...
- android-studio-ide 安装到运行第一个helloword,坑记录
1: 安装是提示 机器虚拟化问题,系统如开启了Hyper-V,必须关闭服务 2:安装完后,建立第一个项目,gradle build 一直转圈,最后报错 Gradle project sync fai ...
- JDialog
JDialog继承Dialog,Dialog继承Window,所以可以用setLocationRelativeTo(Component c)来实现Dialog的显示,当c为空时,直接显示在屏幕前,为组 ...
- 第二章、Django以及数据库的配置
目录 第二章.Django以及数据库的配置 一.小白必会三板斧 二.静态文件配置 三.form表单 action和method参数可以写的形式 四.request对象及方法 五.django连接数据库 ...
- Scala语言面向对象
apply1. 面向对象的基本概念: 把数据及对数据的操作方法放在一起,作为一个相互依存的整体-----对象,面向对象的三大特征:封装.多态.继承 2. scala类的定义 · class Emplo ...
- Mac息屏后如何保持网络连接,方便远程访问
1 wifi换成有线,因为息屏后WiFi就会自动断开 2 设置修改,点亮唤醒网络不勾选,进入休眠不勾选 3 目前测试用向日葵,远程这台电脑,再屏幕保护程序运行的情况下,可以远程控制.