题目背景

放假了,Lkw和mm到岛上旅游。阳光明媚,风景秀丽。正当Lkw和mm享受眼前这旖旎的风光时,突降大雨,小岛上开始积水,没过几分钟,水便快要触及膝盖。Lkw和mm意识到了事态的严重性,赶紧向高地跑去,可在涌动的人流中,Lkw和mm失散了...水越涨越高,Lkw拿着望远镜四处寻找,耳边不停地传来mm的呼喊,可就是不见mm的身影……焦急的Lkw想知道mm可能在几个区域,你能帮助他么?

题目描述

从水平方向看,我们把岛屿分成n个小块,每个部分用一个数h表示高度,每个区域由相连的小块组成。一开始,水位为0,整个岛屿只有一个区域,在水上涨的过程中,某些小块会被淹没,这样原本相连的区域就会变成多个,假设每个时刻水位会上涨1,现在Lkw想知道q个时刻的情况。

输入输出格式

输入格式:

输入第一行包含一个整数n

第二行包含n个整数,分别表示每个小块的高度

第三行包含一个整数q

第四行包含q个整数,表示要询问的q个时刻。

输出格式:

输出共包含q行,每行表示该时刻mm可能在的区域有几个。

输入输出样例

输入样例#1:

  1. 7
  2. 1 2 3 1 2 1 3
  3. 3
  4. 1 2 3
输出样例#1:

  1. 3
  2. 2
  3. 0

说明

对于30%的数据n<=1000 q<=1000

对于100%的数据n<=100000 q<=100000 h<=109

输入保证q单调递增

  1. /*
  2. 将数列按照高度排序,先计算出一个开始时的区域数ans,当要下落的石块左右两边都已经下落时,ans--;当要下落的石块的左右两边都没下落时,ans++。
  3. 第一遍做只考虑了下落的那个时刻,没考虑其他时刻,WA了。
  4. */
  5. #include<iostream>
  6. #include<algorithm>
  7. #define N 100010
  8. using namespace std;
  9. int n,tmp,now=,ans=;
  10. struct node
  11. {
  12. int h;
  13. int x;
  14. bool operator < (node t)const
  15. {
  16. return t.h>h;
  17. }
  18. };node a[N];
  19. bool flag[N];
  20. int main()
  21. {
  22. cin>>n;
  23. for(int i=;i<=n;i++)
  24. {
  25. cin>>tmp;
  26. a[i].h=tmp;
  27. a[i].x=i;
  28. flag[i]=;
  29. }
  30. sort(a+,a+n+);
  31. cin>>n;
  32. for(int i=;i<=n;i++)
  33. {
  34. cin>>tmp;
  35. while(a[now].h<=tmp&&now<=n)
  36. {
  37. int t=-,x=a[now].x;
  38. if(x>&&flag[x-]) t++;
  39. if(x<n&&flag[x+]) t++;
  40. ans+=t;
  41. flag[x]=;
  42. now++;
  43. }
  44. cout<<ans<<endl;
  45. }
  46. return ;
  47. }

岛屿(洛谷 U5399)的更多相关文章

  1. 洛谷P4312 [COCI 2009] OTOCI / 极地旅行社(link-cut-tree)

    题目描述 不久之前,Mirko建立了一个旅行社,名叫“极地之梦”.这家旅行社在北极附近购买了N座冰岛,并且提供观光服务. 当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走在各个冰岛之间.Mi ...

  2. 洛谷P1000超级马里奥的神奇解法

    话说上过洛谷的都知道,有一道经典例题P1000超级马里奥,这一题,可以说是非常简单非常经典,但是就算如此,还是可以人才辈出,我是个比较循规蹈矩的人(雾),所以我的代码就比较平常,也就是直接输出了所要求 ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  9. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

随机推荐

  1. 51NOD 1400 序列分解

    传送门:1400 序列分解序列分解 基准时间限制:1s  空间限制:131072 KBKB131072 KB 1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题1 秒 空间限制:13 ...

  2. Centos6.4下Yum命令安装Mysql数据库及配置

    如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了 如果要开发web项目,我们当然可以安装一个 ...

  3. std::auto_ptr

    auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的 ...

  4. 在xib里,拖一个UIView到UITableView中作为tableHeaderView

    原贴地址:http://blog.csdn.net/haoxinqingb/article/details/41683881 内容 在xib里,拖一个UIView到UITableView中作为tabl ...

  5. BurpSuite之HTTP brute暴力破解

    常规的对username/passwprd进行payload测试,我想大家应该没有什么问题,但对于Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=这样的问题, ...

  6. Javascript动态调整文章的行距、字体、颜色,及打印页面和关闭窗口功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 5个常用Java代码混淆器 助你保护你的代码

    [IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...

  8. 不引用office动态库导出excel

    public class OutExcelReport { /// <summary> /// 把 DataSet 的数据导成 Excel /// </summary> /// ...

  9. BSGS算法_Baby steps giant steps算法(无扩展)详解

    Baby Steps-Varsity Giant Step-Astronauts(May'n・椎名慶治) 阅读时可以听听这两首歌,加深对这个算法的理解.(Baby steps少女时代翻唱过,这个原唱反 ...

  10. 点击label时click事件被触发两次的坑

    今天帮群里的朋友看一段代码的时候偶然间遇到一个label的坑,点击label的时候,监听的click事件被执行两次: 具体代码如下: <div id="test"> & ...