链接:https://www.nowcoder.com/acm/contest/158/F

挺有意思的一道题,考场并查集忘记路径压缩就没AK==

很显然一个贪心是不,每只青蛙使劲往前跳,能跳多远跳多远

因为青蛙跳的距离一定是单增的,所以O(m)就可以处理出来每只青蛙跳多远

然后青蛙能跳到的最远的没青蛙的点我们可以用并查集来维护一下

如图假如A,B都能跳到D,让A跳到D,D就有青蛙了,让D的父亲指向上一个点

这时我们再跳B,B就跳到C上了

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#define M 300010
using namespace std;
int n,m,ans,d,T;
int fa[M],a[M],maxn[M];
bool vis[M];
inline int read() {
char c = getchar() ; int x = , w = ;
while(c>''||c<'') { if(c=='-') w = - ; c = getchar() ; }
while(c>=''&&c<='') { x = x*+c-'' ; c = getchar() ; }
return x*w ;
}
int find(int x) {return fa[x]==x?x:fa[x]=find(fa[x]);}
int main()
{
//freopen("tt.in","r",stdin);
scanf("%d",&T);
while(T--)
{
memset(vis,false,sizeof(vis));
ans=;
scanf("%d%d%d",&n,&m,&d);
for(int i=;i<=m+;i++)
{
a[i]=read();
fa[i]=i;
}
maxn[]=;
for(int i=;i<=m+;i++)
{
maxn[i]=maxn[i-];
while(a[maxn[i]+]-a[i]<=d&&maxn[i]<=m) maxn[i]++;
}
for(int i=;i<=maxn[];i++) vis[i]=true;
for(int i=;i<=m+;i++)
{
if(!vis[i]) continue;
int MX=find(maxn[i]);
if(MX<=i) continue;
if(MX<=) continue;
if(!vis[MX])
{
vis[i]=false;
vis[MX]=true;
fa[MX]=fa[MX-];
}
}
for(int i=;i<=m+;i++)
if(vis[i]&&a[i]+d>=a[m+])
ans++;
printf("%d\n",ans);
}
return ;
}

[nowcoder]青蛙的更多相关文章

  1. 青蛙跳台阶问题——剑指offer

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级台阶总共有多少中跳法. http://www.nowcoder.com/books/coding-interviews?pa ...

  2. 青蛙跳N阶(变态跳)

    https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级 ...

  3. 牛客网挑战赛24 青蛙(BFS)

    链接:https://www.nowcoder.com/acm/contest/157/E来源:牛客网 有一只可爱的老青蛙,在路的另一端发现了一个黑的东西,想过去一探究竟.于是便开始踏上了旅途 一直这 ...

  4. [LeetCode] Frog Jump 青蛙过河

    A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...

  5. POJ1061青蛙的约会[扩展欧几里得]

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 108911   Accepted: 21866 Descript ...

  6. 青蛙跳100级台阶算法,完整可运行,php版本

    /* 算法题目 * 2016年4月11日16:11:08 * 一只青蛙,一次可以跳1步,或者2步,或者3步,现在要跳100级台阶,请问青蛙有多少种上100级台阶的跳法 * 1步的有$n 2步的有$m ...

  7. 题目描述: k一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    时间限制:1秒     空间限制:32768k 斐波那契数列指的是这样一个数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,9 ...

  8. JAVA-小青蛙跳石头游戏

    游戏摘自微信传的手机网页版小游戏,我拿来做成了JAVA的界面版,但是没有去做素材,,直接拿方块代替小青蛙.游戏原址就不分享了,只能在手机上打开. 下面是源码: /* * Main.java * */ ...

  9. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

随机推荐

  1. css3 box

    一.box-shadow介绍 box-shadow属性向box添加一个或多个阴影. 语法: box-shadow: offset-x offset-y blur spread color inset; ...

  2. hdu2732 (Leapin' Lizards)

    题目链接:传送门 题目大意:给你 n,m  n:有几行图,m是一个人最多跳m个曼哈顿距离. 给你两张图,第一张图数字为0表示没有柱子,否则有柱子且只能跳出去 x 次(x为当前字符代表的数字) 第二张图 ...

  3. @RequestMapping中method的默认值是什么?

    @RequestMapping中method的默认值是什么? 没有默认值,如果不配置method, 则以任何请求形式 RequestMethod.GET, RequestMethod.POST, Re ...

  4. MySQL 索引性能分析概要

    上一篇文章 MySQL 索引设计概要 介绍了影响索引设计的几大因素,包括过滤因子.索引片的宽窄与大小以及匹配列和过滤列.在文章的后半部分介绍了 数据库索引设计与优化 一书中,理想的三星索引的设计流程和 ...

  5. PLSQL Developer在未安装Oracle Client情况下连接Oracle

    常用的Oracle开发的工具有SQL Developer和PL/SQL Developer, 用PL/SQL连接oracle数据库,不管是本地的还是远程的,一般都需要安装oracle客户端 如何达到不 ...

  6. 4.php奇葩的地方,反引号``

    今天我发现我从来没打过这外符号 ` 就是键盘的左上方, 1的左边不需要组合键, 直接按下即可.... 刚开始我还一直在找没找到.....百度一下.才知道

  7. 处理界面上使用两个jq的报错

    转载:http://www.365mini.com/page/jquery_noconflict.htm <script src="jquery-1.9.1.js">& ...

  8. python函数回顾:slice()

    描述 slice() 函数实现切片对象,主要用在切片操作函数里的参数传递. 语法 class slice(stop) class slice(start, stop[, step]) 参数说明: st ...

  9. openPOWERLINK代码在vs2008下编译

    以openPOWERLINK_V1.08为例: 1.在主目录下新建Build目录 2.使用cmake-gui对代码进行配置 3.配置完成后生成工程文件xxx.sln 4.使用vs2008打开上述文件, ...

  10. Digital Audio - Creating a WAV (RIFF) file

    Abstract:This tutorial covers the creation of a WAV (RIFF) audio file. It covers bit size, sample ra ...