洛谷P1514引水入城
题目
搜索加贪心其实并不需要用到\(DP\),搜索也是比较简单地搜索。
对于每个第一行的城市进行类似于滑雪那道题的搜索,然后记录最后一行它所覆盖的区间,易得一个一行城市只会有一个区间。然后可以在最后进行线段覆盖贪心即可求出答案。要注意区间闭开和边界问题。
\(Code\)
#include <bits/stdc++.h>
#define N 501
using namespace std;
int di[5] = {0, 1, -1, 0, 0}; int dj[5] = {0, 0, 0, 1, -1};
int n, m, flag, tot, data[N][N], vis[N], dp[N][N];
struct C7 {
int i, j;
};
struct block {
int l, r;
}s[100010];
bool cmp(block a, block b)
{
if (a.l == b.l)
return a.r > b.r;
return a.l < b.l;
}
inline void init()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
scanf("%d", &data[i][j]);
}
inline void bfs()
{
queue <C7> q;
for (int o = 1; o <= m; o++)
{
memset(dp, 0, sizeof(dp));
if (n == 1) vis[o] = 1;
dp[1][o] = o;
q.push({1, o});
while (!q.empty())
{
C7 cur = q.front(); q.pop();
int i = cur.i, j = cur.j;
for (int k = 1; k <= 4; k++)
{
int nexi = i + di[k], nexj = j + dj[k];
if (nexi <= 0 || nexj <= 0 || nexi > n || nexj > m)
continue;
if (!dp[nexi][nexj] && data[nexi][nexj] < data[i][j])
{
dp[nexi][nexj] = o;
q.push({nexi, nexj});
if (nexi == n)
vis[nexj] = 1;
}
}
}
flag = 0;
for (int i = 1; i <= m + 1; i++)
{
if (dp[n][i] && !flag)
{
flag = 1;
s[++tot].l = i;
}
if (!dp[n][i] && flag)
{
s[tot].r = i;
flag = 0;
}
}
}
}
inline void prin()
{
int ans = 0;
for (int j = 1; j <= m; j++)
if (vis[j])
ans++;
if (ans != m)
printf("0\n%d", m - ans);
else
{
sort(s + 1, s + 1 + tot, cmp);
// for (int i = 1; i <= tot; i++)
// printf("%d %d\n", s[i].l, s[i].r);
// return;
int ans = 0, left = 0, right = 0;
for (int i = 1; i <= tot; i++)
{
if (left >= s[i].l)//要加=号,这是贪心的线段覆盖的模板。
right = max(right, s[i].r);
else
{
ans++;
left = right;
right = max(right, s[i].r);
}
if (right > m) break;
}
printf("1\n%d", ans);
}
}
int main()
{
init();
bfs();
prin();
return 0;
}
洛谷P1514引水入城的更多相关文章
- 洛谷P1514 引水入城
洛谷P1514 引水入城 原题链接 一道好题...细节真多 第一次提交90分,然后就GG了,不知从何改起 其实比较简单吧... 首先,一个点的水流向最后一排,一定可以形成一个区间. 不行的话肯定GG ...
- 洛谷 P1514 引水入城 解题报告
P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 NN 行 \times M×M 列的矩形,如上图所示,其中每个格 ...
- CODEVS 1066/洛谷 P1514引水入城
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个遥远的国 ...
- 洛谷P1514 引水入城 [搜索,区间DP]
题目传送门 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每 ...
- 洛谷P1514 引水入城——dfs
题目:https://www.luogu.org/problemnew/show/P1514 搜索+DP: 自己想出来的方法第一次80分好高兴! 再改了改就A了,狂喜乱舞: 也就是 dfs,仔细一想第 ...
- [NOIP2010] 提高组 洛谷P1514 引水入城
题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度. ...
- 洛谷 P1514 引水入城
这次不说闲话了,直接怼题 这道题用bfs其实并不难想,但比较困难的是怎么解决满足要求时输出蓄水厂的数量.其实就像其他题解说的那样,我们可以用bfs将它转化成一个区间覆盖问题,然后再进行贪心. 首先枚举 ...
- [luogu]P1514 引水入城[搜索][记忆化][DP]
[luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...
- Luogu P1514 引水入城
我承认我有点懒(洛谷已经发过题解了,但我发誓要坚持写博客) 这道题坑了我3天…… 首先一看就与染色问题类似,果断BFS(写DFS炸了) 先将最上面(靠近水)的一行全部扔进队列里,做一遍BFS 再对最下 ...
随机推荐
- dubbo源码阅读之服务引入
服务引入 服务引入使用reference标签来对要引入的服务进行配置,包括服务的接口 ,名称,init,check等等配置属性. 在DubboNamespaceHandler中,我们可以看到refer ...
- 用less查看日志文件
一般程序部署在Linux环境,查看日志时,一般用less满足大部分的需求. 列举.记录最常用的场景,代码以Tomcat日志文件catalna.out为例. 1. > 直接查看文件 less ca ...
- 纯CSS一个div实现无缝隙尖角框
话不多说直接先上效果图 其实原理很简单,就是一个带边框的方块加上一个黑色三角形和一个白色三角形,最后通过position定位实现. 代码如下: HTML就一个div <div></d ...
- 关于移动端图片浏览,previewimage的使用
我相信在移动端项目中,大家都会遇到图片浏览的问题,像qq,微信,微博,淘宝,当你点击图片时,图片会放大全屏显示,双击图片时图片继续放大查看,双指左右滑动也可以放大,当你再次点击时图片,图片恢复原始大小 ...
- unity 编译之后签名被改变
原因:在gradle 模式下编译,把development build 勾上 会使签名改变
- 关于MySql升级JDBC架包导致时区问题报错(The server time zone value '?й???????' is unrecognized or represents more than one time zone)
报错信息: The server time zone value '?й???????' is unrecognized or represents more than one time zone. ...
- python爬虫爬取get请求的页面数据代码样例
废话不多说,上代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # 导包 import urllib.request import urllib.pars ...
- django框架介绍安装-自写框架
原文链接:https://www.cnblogs.com/maple-shaw/p/8862330.html Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户 ...
- Linux/Windows下安装SonarCube
1. 下载合适的版本,尽量不要下载最新的版本,最新的版本要求Java 11+,如果没有安装最新版的Java的话,尽量用 SonarQube 7.0 以下的版本,SonarQube 7.0是可以用jdk ...
- Codes: MODERN ROBOTICS Ch.4_基于PoE的正运动学代码实现
%%1 基于PoE space form 的正运动学求解 % 输入M矩阵.螺旋轴列表Slist(column vector).关节角向量qlist(column vector),输出齐次变换矩阵T f ...