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] 引水入城的更多相关文章

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

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

  2. [luogu]P1514 引水入城[搜索][记忆化][DP]

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

  3. 洛谷 P1514 【引水入城】

    题库 :洛谷 题号 :1514 题目 :引水入城 link :https://www.luogu.org/problemnew/show/P1514 思路 :搜索从第一排开始能覆盖最后一排的区间L ~ ...

  4. NOIP2010 引水入城

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

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

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

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

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

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

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

  8. 洛谷P1514 引水入城

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

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

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

随机推荐

  1. 剑指offer20:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    1 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 2. 思路和方法 利用辅助栈来存储现有栈的最小值.在入栈和出栈的时候将现有栈和最小 ...

  2. codeforces 1251D Salary Changing (二分+贪心)

    (点击此处查看原题) 题意分析 一共有s元钱,要用这些钱给n个人发工资,发给每个人的工资si有最少和最多限制 si ∈[li,ri],在发给n个人的总工资小于s的情况下,要求发给n个人中的工资的中位数 ...

  3. 一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克

    public static void main(String[] args) { List<Integer> list = new ArrayList<>();//记录每组数的 ...

  4. 9.ssh登录慢

    修改方式:使用root权限修改ssh的配置文件,vim /etc/ssh/sshd_config增加一行记录:UseDNS no修改GSSAPIAuthentication参数为 no,默认是yesP ...

  5. 第十三章 ZYNQ-MIZ702 PL中断请求

    本篇文章主要介绍外设(PL)产生的中断请求,在PS端进行处理. 在PL端通过按键产生中断,PS接受到之后点亮相应的LED. 本文所使用的开发板是Miz702 PC 开发环境版本:Vivado 2015 ...

  6. 怎样快捷获取网页的window对象

    使用document.defaultView; document.defaultView === window 注意: 1. 如果当前文档不属于window对象, 则返回null; 2. docume ...

  7. MyEclipse的Server标签出现:Could not create the view: An unexpected exception was thrown

    删除工作空间下的.metadata\.plugins\org.eclipse.core.runtime\.settings\com.genuitec.eclipse.ast.deploy.core.p ...

  8. 我是如何将一个加载90s的接口优化到不足2s的

    一.提出问题 由于公司是做医疗级智能可穿戴设备的,所以数据(二进制数据)的存储方面有点特殊,数据没有存储于数据库里面,而是存储于磁盘上.可能有同学质疑,mysql的Blob类型也可以存储二进制数据啊, ...

  9. Java Web-EL表达式 in JSP

    Java Web-EL表达式 in JSP 概念 EL(Expression Language)是一种表达式语言,可以替换和简化JSP页面上JAVA代码的书写 语法 ${<在这里写表达式> ...

  10. 集合源码阅读——ArrayList

    ArrayList 关键点: >>扩容每次扩容1.5倍 >>modcount的作用 >>ArrayList的父类AbstractList的成员变量 >> ...