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. LeetCode. 位1的个数

    题目要求: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例: 输入:00000000000000000000000000001011 输 ...

  2. python selenium2 模拟点击+拖动 测试对象 58同城验证码

    #!/usr/bin/python # -*- coding: UTF-8 -*- # @Time : 2019/12/5 17:30 # @Author : shenghao/10347899@qq ...

  3. 检查一个string是否包含List<string>中的任意一个

    bool b = listOfStrings.Any(s=>myString.Contains(s)); 应用在where子句中的示例: //获取路径 var groupPaths = grou ...

  4. ES5中一些重要的拓展

    1.对象的拓展 ①Object.create(obj, {age:{value:18, writable:true, configurable:true, enumerable:true}); 以指定 ...

  5. vue学习(9)-路由守卫

    全局守卫 你可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... })   router.beforeEach(( ...

  6. JavaSpring【二、IOC】

    概述: 接口及面向接口编程 接口:用于沟通的中介物的抽象,实体把自己提供给外界的方法的抽象化说明,将声明和实现分离,使其能够改变内部而不影响与外部的交互方式 面向接口编程:在结构设计中,分清层次及调用 ...

  7. shiro系列一、认识shiro

    Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大 ...

  8. PXE批量部署安装Linux系统

    PXE介绍 1)Preboot Excution Environment 预启动执行环境 2)Intel公司研发 3)基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映 ...

  9. (一)Android jni打印到logcat

    #include <stdio.h> #include <android/log.h> int main(void) { int a = 0x10,b = 0x20; __an ...

  10. 【2017-06-16】Jquery获取dropdownlist选中的内容

    var Text = $("#DropDownList1 option:selected").text(); 注意:DropDownList1和option之间有个空格!!!