洛谷P1514 引水入城
洛谷P1514 引水入城
原题链接
一道好题。。。细节真多
第一次提交90分,然后就GG了,不知从何改起
其实比较简单吧。。。
首先,一个点的水流向最后一排,一定可以形成一个区间。
不行的话肯定GG
所以先大力dfs出每个点的区间。
dfs之后可以先check一下
无解就暴力乱搞
有解时贪心,最开始右端点为0,每次选择可以与右端点相连接的区间中右端点最右的(语文不好),加入进答案并且更新右端点直到覆盖全区间。
我什么时候才能1A一道noip题。。。
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
typedef long long ll;
il int gi(){
rg int x=0,f=1;rg char ch=getchar();
while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
int n,m;
int h[510][510];
bool vis[510][510];
bool yes[510];
const int X[]={0,1,-1,0,0},Y[]={0,0,0,1,-1};
il vd dfs(int x,int y){
vis[x][y]=1;
if(x==n)yes[y]=1;
rep(i,1,4){
#define xx x+X[i]
#define yy y+Y[i]
if(vis[xx][yy]||h[xx][yy]>=h[x][y])continue;
dfs(xx,yy);
}
}
int l[510],r[510];
il vd check(){
int prt=0;
rep(i,1,m)if(!yes[i])++prt;
if(!prt)return;
printf("0\n%d\n",prt);
exit(0);
}
int main(){
n=gi(),m=gi();
rep(i,1,n)rep(j,1,m)h[i][j]=gi();
rep(i,0,m+1)vis[0][i]=vis[n+1][i]=1;
rep(i,0,n+1)vis[i][0]=vis[i][m+1]=1;
rep(i,1,m){
rep(j,1,n)rep(k,1,m)vis[j][k]=0;
if(h[1][i]<h[1][i-1]||h[1][i]<h[1][i+1])continue;
dfs(1,i);
l[i]=1,r[i]=m;
while(!vis[n][l[i]])++l[i];
while(!vis[n][r[i]])--r[i];
}
int nowr=0,ans=0;
check();
while(nowr<m){
int res=0;
rep(i,1,m)if(l[i]<=nowr+1&&r[i]>r[res])res=i;
if(res==0)return 0;
else nowr=r[res];
++ans;
}printf("1\n%d\n",ans);
return 0;
}
洛谷P1514 引水入城的更多相关文章
- 洛谷 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将它转化成一个区间覆盖问题,然后再进行贪心. 首先枚举 ...
- 洛谷P1514引水入城
题目 搜索加贪心其实并不需要用到\(DP\),搜索也是比较简单地搜索. 对于每个第一行的城市进行类似于滑雪那道题的搜索,然后记录最后一行它所覆盖的区间,易得一个一行城市只会有一个区间.然后可以在最后进 ...
- [luogu]P1514 引水入城[搜索][记忆化][DP]
[luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...
- Luogu P1514 引水入城
我承认我有点懒(洛谷已经发过题解了,但我发誓要坚持写博客) 这道题坑了我3天…… 首先一看就与染色问题类似,果断BFS(写DFS炸了) 先将最上面(靠近水)的一行全部扔进队列里,做一遍BFS 再对最下 ...
随机推荐
- curl 抓取页面信息
<?php // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "www" ...
- [19/04/13-星期六] 网络编程_基本概念(关注传输层、数据传输,TCP和UDP)
一.概念 ▪ 什么是计算机网络? 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统, 网络管理软件及网络通信协议的管理和协调下,实现资源共享和信 ...
- 【node.js】事件循环、EventEmitter
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. 事件驱动程序 ...
- random模块 参生随机数
记得要import random模块 随机整数: >>> import random >>> random.randint(0,99) 21 随机选取0到100间的 ...
- 俄罗斯方块 UWP 版
UWP跟 WPF编程模型一致,不过UWP做了精简,而且不同的系统的API还略有不同.不同的地方有以下几点: 1.动画.动画除了故事版,还有其它的实现方式. 2.异步方法.UWP中的方法调用,大部分都是 ...
- spring aop,静态及动态代理例子
@Aspect@Componentpublic class AopText { @Pointcut("execution(public * com.llf.service.*Service. ...
- Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
# coding=utf8 import paramiko """ /* python -m pip install paramiko python version 3. ...
- (转)解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...
- CCF认证201803-1 跳一跳
import java.util.Scanner; public class Jump { public static void main(String[] args) { Scanner sc = ...
- MessageBox.Show用法
private void button3_Click(object sender, EventArgs e) { MessageBox.Show(" 1 个参数 "); } ~ ...