【第22期】观点:IT 行业加班,到底有没有价值?

【NOIP 模拟题】刺杀大使(二分答案+并查集)

原创 2016年08月28日 16:59:22

                                                        

                                           

                                                         


【题解】【二分答案】

【看到最大值最小,那必然二分答案啊,考试时不知脑子干什么去了。。。】

【先找出整个矩阵中的最大值,作为二分的右边界,然后,二分答案,把符合条件的相邻的格用并查集并到一个集合中,当用小于等于当前值的格可以把1和n*m联通时,当前值合法】

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,a[1010][1010],ans,maxn;
int f[1000010];
int  find(int x)
{
	if(f[x]==x) return f[x];
	f[x]=find(f[x]);
	return f[x];
 } 
inline void link(int x,int y)
{
	int f1=find(x),f2=find(y);
	f[f1]=f2;
}
inline bool check(int t)
{
	for(int i=1;i<=n*m;++i) f[i]=i;
	for(int i=1;i<=n;++i)
	 for(int j=1;j<=m;++j)
	  if(a[i][j]<=t)
	   {
	   	int now=(i-1)*m+j;
	   	if(i+1<=n&&a[i+1][j]<=t) link(now,i*m+j);
	   	if(j+1<=m&&a[i][j+1]<=t) link(now,now+1);
	   }
	if(find(1)==find(n*m)) return 1;
	return 0;
}
inline void qsort(int l,int r)
{
	int mid;
	while(l<=r)
	 {
	 	mid=(l+r)>>1;
	 	if(check(mid)) r=mid-1,ans=mid;
	 	 else l=mid+1;
	 }
}
int main()
{
	freopen("murder.in","r",stdin);
	freopen("murder.out","w",stdout);
	int i,j;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i) 
	 for(j=1;j<=m;++j)
	   scanf("%d",&a[i][j]),maxn=max(a[i][j],maxn);
	qsort(0,maxn);
	printf("%d\n",ans);
	return 0;
 } 


版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/reverie_mjp 举报

相关文章推荐

NOIP2015提高组第二题信息传递[图论]

这道题我一开始做感觉没有任何思路,但一开始就觉得是图论,就在思考用邻接矩阵还是链式前向星,可是邻接矩阵每判断一次就是$O(n^2)$,在次数最多是链式前向星空间复杂度达$O(n^2)$,直接爆空间,后...

NOIP 2015模拟赛 题解&总结

这场比赛总的来讲不是很难,区分度并不高,第一题属于思维训练类型,第二题是一个比较新的DP题,第三题转化一下就是贪心+背包了 总的来说,要根据题目中的已知条件来判断出题人的意图,比如第一题给出的范围 ...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

noip2015提高组初赛(答案+选择题题目+个人分析)

一、单项选择题(共15题,每题1.5分,共计22.5分;每题有且仅有一个正确选项)     1. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以(   )形式进行的。  A. 二进制码...

NOIP2014提高组第一试题解

【第一题】石头剪刀布 rps 【题目大意】 a和b石头剪刀布游戏,每个人一共有五种方式,相互之间的胜负关系给出,a和b出拳的方式是循环的,赢者得一份,其余不得分。 问n轮以后a和b的得分。 纯粹的模拟...

NOIP2014提高组第二试题解

第一题 wireless 枚举即可,如果数据变大可用部分和优化 #include #include #include #include using namespace std; const i...

NOIP2015 day2 解题报告

做题注意要把自己检验程序时多余printf的东西删掉啊,今天两道题ole… 第一题: 1 . 跳石头 (stone.cpp/c/pas) 【问题描述】 一年一度的“跳石头”比赛又要开始了! ...

NOIP2015 PJ T3,T4 题解

SumDescription 一条狭长的纸带被均匀划分出了n n 个格子,格子编号从 1 到 nn。每个格子上都染了一种颜色coloricolori(用[1,m]当中的一个整数表示),并且写了一个...

NOIP2015 跳石头 解题报告(二分答案)

在线评测: http://codevs.cn/problem/4768/ 整体思路: 二分答案,看可不可以就行 失误之处: 没有考虑中间没有石头的情况, 体会心得:...

noip模拟赛题解&总结(2015.10.18-2015.10.19)

Day1:T1 考场上觉得第二题比较水,于是就果断地跳进第二题的坑了,结果部分分都没来的及拿... f[i][l]:用了i-n的数,这段子序列开始位置为l的方案数 考虑新加的一个数x,设原序列为S, ...

Codevs_P1261 龙王的礼物(DP+背包)

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 今天是东海龙王n岁的生日,他收到了南海龙王的一份特殊礼物,南海龙王给了他...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)