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. 【计算机网络】-传输层-Internet传输协议-TCP

    [计算机网络]-传输层-Internet传输协议-TCP TCP介绍 在不可靠的互联网上提供一个可靠的端到端字节流 面向连接的.可靠的.端到端的.基于字节流的传输协议 TCP位置 TCP服务模型 应用 ...

  2. hdu 6058 思维

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6058 分析题目的时候,由于枚举的区间很多,而第k大的值范围小,应该要想到去枚举第k大的值然后找到这个值对答 ...

  3. Angular6如何引入jQuery-knob

    Angular6如何引入jQuery-knob 1.概述 Angular6引入jQuery变得异常简单,请参考https://blog.csdn.net/qq_35321405/article/det ...

  4. Django rest-framework框架-用户权限实例

    简单实例: class MyPermission(object): ''' 权限控制类 ''' def has_permission(self,request,view): if request.us ...

  5. TypeScript入门四:TypeScript的类(class)

    TypeScript类的基本使用(修饰符) TypeScript类的抽象类(abstract) TypeScript类的高级技巧 一.TypeScript类的基本使用(修饰符) TypeScript的 ...

  6. base64转换成文件图片

    最近搞小程序分享画布遇到的坑 canvas drawImage 传入的第一个参数是 imageResource 图片资源路径,这个参数通常由从相册选择图片 wx.chooseImage 或 wx.ge ...

  7. Dubbo 配置参数

    关闭启动检查 在dubbo多模块项目启动的时候为了并行启动多个服务,缩短启动时间,需要解除模块之间的依赖检测 dubbo.consumer.check=false @Reference(check = ...

  8. 解决 vue 使用 element 时报错ERROR in ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf

    在 webpack.config.js 中加入这个依赖 { test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/, loader: 'file-loader' }

  9. spring依赖注入时,什么时候会创建代理类

    spring 依赖注入时,什么时候会创建代理类 有的会创建代理类来替代目标类的实现.比如有事务注解啊 有的直接使用目标类.啥拦截配置都没有.

  10. SpringBoot+MyBatis+Mysql 6.X 版本日期型数据获,时间错乱,jason序列化时间相差8小时问题

    新项目是用的springboot+mybatis+mysql 6.0.6版本的驱动包来搭建的,在使用的过程中遇到以下2个问题 从mysql取的的数据日期时间,与真实的时间往后错乱了14个小时. spr ...