题目大意:

约翰的表哥罗恩生活在科罗拉多州。他近来打算教他的奶牛们滑雪,但是奶牛们非常害羞,不敢在游人如织的度假胜地滑雪。没办法,他只好自己建滑雪场了.罗恩的雪场可以划分为W列L行(1≤W≤500;1≤L≤500),每个方格有一个特定的高度H(0≤H≤9999)。奶牛可以在相临方格间滑雪,而且不能由低到高滑。为了保证任意方格可以互通,罗恩打算造一些直达缆车。缆车很强大,可以连接任意两个方格,而且是双向的。而且同一个方格也可以造多台缆车。但是缆车的建造费用贵得吓人,所以他希望造尽量少的缆车。那最少需要造多少台呢?
 
思路:

要保证任意方格可以互通,只要让每个方格都能到旁边所有方格,且旁边所有方格都能到这个方格。将可以互达的方格看成一个集合,显然集合中所有方格的高度相同。将每个集合看成一个点,从高的点向低的点连一条有向边。那么入度为0的点就需要从别的点建造一台缆车。同样出度为0的点也需要向别的点建造一台缆车。统计入度为0的点的个数和出度为0的点的个数,由于一台缆车能解决一个出度为0的点和一个入度为0的点,所以答案就是其中较大值。
代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
inline char Nc(){
static char buf[],*p1=buf,*p2=buf;
if(p1==p2){
p2=(p1=buf)+fread(buf,,,stdin);
if(p1==p2)return EOF;
}
return *p1++;
}
inline void Read(int& x){
char c=Nc();
for(;c<''||c>'';c=Nc());
for(x=;c>=''&&c<='';x=(x<<)+(x<<)+c-,c=Nc());
}
int a[]={,,-,};
int b[]={,-,,};
int i,j,k,n,m,h[][],f[][],x,y,Num;
bool In[],Out[];
inline void Dfs(int x,int y){
if(f[x][y])return;
f[x][y]=Num;
for(int i=;i<;i++)
if(a[i]+x>&&a[i]+x<=n)
for(int j=;j<;j++)
if(b[j]+y>&&b[j]+y<=m&&h[x][y]==h[x+a[i]][y+b[i]])Dfs(x+a[i],y+b[i]);
}
int main()
{
Read(m);Read(n);
for(i=;i<=n;i++)
for(j=;j<=m;j++)
Read(h[i][j]);
for(i=;i<=n;i++)
for(j=;j<=m;j++)
if(!f[i][j])Num++,Dfs(i,j);
if(Num==)return putchar(''),;
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(i<n&&f[i][j]!=f[i+][j])
if(h[i][j]>h[i+][j])Out[f[i][j]]=In[f[i+][j]]=;else In[f[i][j]]=Out[f[i+][j]]=;
if(j<m&&f[i][j]!=f[i][j+])
if(h[i][j]>h[i][j+])Out[f[i][j]]=In[f[i][j+]]=;else In[f[i][j]]=Out[f[i][j+]]=;
}
for(i=;i<=Num;i++){
if(!In[i])x++;
if(!Out[i])y++;
}
printf("%d\n",x>y?x:y);
return ;
}

bzoj3388

bzoj3388(神奇的解法)的更多相关文章

  1. 急训 Day 1 (2)

    Mushroom的区间[题目描述]Mushroom有一行数,初始时全部是0.现在Mushroom有m个区间[L,R],他希望用以下操作得到新的序列.从m个给定区间中选择一个区间[s,t],把区间中的数 ...

  2. Codeforces Round #321 div2

    好像前几场的题解忘记写了, Orz 状态太差, 平均出两题   都不好意思写了 , 连掉4场, 都要哭晕了. 很水的一场, 写完A B C就去睡了  D题其实不难, E题研究Ing(已用一种奇怪的姿势 ...

  3. 2-SAT 及 一点习题

    今天简单学习了一下2-SAT.现在简单地总结一下.至于定义之类的就不写了,这里就写写做法,以防以后忘记. 构图 每个值a,拆为两个点,一个表示a,一个表示^a(非a).每个点我们可以看成是一个命题(这 ...

  4. leetcode之Largest Rectangle in Histogram

    问题来源:Largest Rectangle in Histogram 问题描述:给定一个长度为n的直方图,我们可以在直方图高低不同的长方形之间画一个更大的长方形,求该长方形的最大面积.例如,给定下述 ...

  5. 洛谷P1224 向量内积

    什么毒瘤...... 题意:给定n个d维向量,定义向量a和b的内积为 求是否存在两个向量使得它们的内积为k的倍数,并给出任一种方案.k <= 3. 解:很容易想到一个暴力是n2d的.显然我们不能 ...

  6. Luogu 3421 [POI2005]SKO-Knights - Exgcd

    Description 给出一个骑士的 $N$种 中行走的方式 $(a_i, b_i)$, 可以使骑士的坐标$(-a,-b)$或$(+a,+b)$. 我们需要找出 第二个骑士的 两种行走方式 $(c_ ...

  7. 平衡树 替罪羊树(Scapegoat Tree)

    替罪羊树(Scapegoat Tree) 入门模板题 洛谷oj P3369 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入xx数 删除xx数(若有多个相同 ...

  8. NOIP前刷题记录

    因为本蒻实在太蒻了...对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续 ...

  9. 『ACM C++』 Codeforces | 1005D - Polycarp and Div 3

    今天佛了,魔鬼周一,在线教学,有点小累,但还好,今天AC了一道,每日一道,还好达成目标,还以为今天完不成了,最近任务越来越多,如何高效完成该好好思考一下了~最重要的还是学业的复习和预习. 今日兴趣新闻 ...

随机推荐

  1. H3 BPM初次安装常见错误详解1-4

    错误1: 首次安装完成无法访问,效果如下. 错误原因:没有配置IIS. 解决方法: 控制面板-程序-打开或关闭Windows功能,选择internet信息服务. 因为安装的时候没有没有iis,所以程序 ...

  2. Spring异步功能

    使用 Spring 的异步功能时,实质是使用的 Servlet3 及以上版本的异步功能. Spring 的异步处理机制需要在 web.xml 中全部的 servlet 和 filter 处配置 < ...

  3. MySQL 数据库双向同步复制

    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...

  4. ubuntu进行子域名爆破

    好记性不如烂笔头,此处记录一下,ubuntu进行子域名的爆破. 先记录一个在线的子域名爆破网址,无意中发现,很不错的网址,界面很干净,作者也很用心,很感谢. https://phpinfo.me/do ...

  5. C#单元测试面面观

    标题有点标题党,但相信各位看完这篇文章一定会所收获,如果之前没有接触过单元测试或了解不深通过本文都能对单元测试有个全新认识.本文的特点是不脱离实际,所测试的代码都是常见的模式. 写完这篇文章后,我看了 ...

  6. 有意思的记录-Java

    1.文件读取 项目外的绝对路径或相对路径文件读取 String path = "/xx/xx.txt"; BufferedReader reader = new BufferedR ...

  7. 【转】java.util.Arrays.asList 的用法

    DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ...

  8. js和jquery实现简单的选项卡

    选项卡切换在做网页的时候经常会用到,以往都是用JQ来实现,代码简单易懂,今天用原生的js实现了一下,二者还是有很大不同的,可以对比一下代码来研究一下. <!DOCTYPE html> &l ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

    系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...

  10. ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤

    系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行选择(在起草时候自行选审批人,比较灵活) 2.按上级(无需指定,当时需要知道用户的上司是谁,可以在职位管理设置,或者在用户表 ...