题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1276

题意:中文题诶~

思路:xjb

通过画图可以发现对于当前水没过的点,若其为极小值点,则岛屿数目-1,若为极大值点则岛屿数目+1;

可以给海面高度排序,海面高度单调时岛屿的状态也是连续的。

可以给山峰高度排序,避免对于每一个高度海面都遍历一遍才能找到被淹没的山峰。

代码:

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <algorithm>
  5. #include <map>
  6. using namespace std;
  7.  
  8. const int MAXN=1e5+;
  9.  
  10. struct node{
  11. int value, num;
  12. }gg[MAXN];
  13.  
  14. int a[MAXN], b[MAXN], value[MAXN];
  15. map<int, int> mp;
  16.  
  17. bool cmp(node a, node b){
  18. return a.value<b.value;
  19. }
  20.  
  21. int main(void){
  22. int n, m, ans=;
  23. scanf("%d%d", &n, &m);
  24. for(int i=; i<n; i++){
  25. scanf("%d", &gg[i].value);
  26. gg[i].num=i;
  27. value[i]=gg[i].value;
  28. }
  29. for(int i=; i<m; i++){
  30. scanf("%d", &a[i]);
  31. }
  32. memcpy(b, a, sizeof(a));
  33. sort(gg, gg+n, cmp);
  34. sort(a, a+m);
  35. int indx=;
  36. for(int i=; i<m; i++){
  37. while(gg[indx].value<=a[i]&&indx<n){
  38. int cc=gg[indx].num;
  39. if(cc==||cc==n-){//注意边界情况
  40. if(cc==){
  41. if(value[cc]>value[cc+]) ans--;
  42. }else{
  43. if(value[cc]>value[cc-]) ans--;
  44. }
  45. }else{
  46. if(value[cc]<value[cc-]&&value[cc]<value[cc+]){
  47. ans++;
  48. }else if(value[cc]>value[cc-]&&value[cc]>value[cc+]){
  49. ans--;
  50. }
  51. }
  52. indx++;
  53. }
  54. mp[a[i]]=ans;
  55. }
  56. for(int i=; i<m; i++){
  57. printf("%d\n", mp[b[i]]);
  58. }
  59. return ;
  60. }

51nod1276(xjb)的更多相关文章

  1. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  2. hdu_5881_Tea(xjb猜)

    题目链接:hdu_5881_Tea 题意: 有一壶水, 体积在 L 和 R 之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不 ...

  3. hdu_5873_Football Games(xjb搞)

    题目链接:hdu_5873_Football Games 题意: 有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分 题解: 可以知 ...

  4. hdu_5761_Rower Bo(xjb猜公式)

    题目链接:hdu_5761_Rower Bo 题意: 让你求一个物理问题 题解: xjb猜公式,由题目样例可得,答案为8/7,然后我们可以xjb猜出公式为v1*a/(v1*v1-v2*v2),然后特判 ...

  5. 隔壁信概大作业xjb写——同化棋ATAXX

    话说泥萌北大信科啊,助教是有多懒...去年黑白棋今年同化棋,顺带打ai都不用自己写标程... 好吧..我知道泥萌重点在各种sb的辅助操作上..什么悲剧的可以随时暂停载入...有毒吧 [据说泥萌上课没讲 ...

  6. [HDU5902]GCD is Funny(xjb搞)

    题意:n个数每次选三个数删除,取其中两个数将gcd放回去两次,问最后剩的数可能是多少 分析:考虑最优情况: 先拿出三个数,留下两个x,x  再来一个y,(x,x,y)我们可以删去一个x,留下两个gcd ...

  7. hdu_5927_Auxiliary Set(xjb搞)

    题目链接:hdu_5927_Auxiliary Set 题意: 给一棵n个节点的树,最开始全部都是重点,现在有q个询问,每次给你一些轻点,并叫你输出整棵树的重点数量, 轻点可能会变为重点,如果这个轻点 ...

  8. hdu_5813_Elegant Construction(xjb搞)

    题目链接:hdu_5813_Elegant Construction 题意: 给你n个点,每个点要可以到达ai个点,可以直接可以间接,不能有环,问是否可行,如果可行就任选一种方式连接,并输出连接的边数 ...

  9. hdu_5805_NanoApe Loves Sequence(xjb搞)

    题目链接:hdu_5805_NanoApe Loves Sequence 题意: 给你n个数,现在要删一个数,删每个数的概率是一样的,现在问你删一个值后的相邻数绝对值最大差的期望是多少,因为担心精度误 ...

随机推荐

  1. SQL创建触发器

    更新: CREATE TRIGGER `r_users_1` AFTER UPDATE ON `users` FOR EACH ROW update `wxusers` set status=NEW. ...

  2. 零基础学python-2.18 异常

    这一节说一下异常except 继续沿用上一节的代码.我有益把文件名称字搞错.然后在结尾部分加上异常捕捉: try: handler=open("12.txt")#在这里我特别将文件 ...

  3. LESS和sa

    一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...

  4. 录音-树莓派USB摄像头话筒

    实测可用: sudo arecord --duration=10 --device=plughw:1,0 --format=cd aaa.wav sudo arecord --duration=10 ...

  5. HDU1133 Buy the Ticket —— 卡特兰数

    题目链接:https://vjudge.net/problem/HDU-1133 Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Me ...

  6. ios 使用json

    1.从https://github.com/stig/json-framework/中下载json框架:json-framework 2.解压下载的包,将class文件夹下的所有文件导入到当前工程下. ...

  7. yii中调取字段名称时label与labelEx的区别

    $form = $this->beginWidget('CActiveForm',array('id' => 'userRegisterForm')); echo $form->la ...

  8. HihoCoder 1640 : 命名的烦恼(预处理)

    描述 程序员常常需要给变量命名.给函数命名.给项目命名.给团队命名…… 好的名字可以大大提高程序员的主观能动性,所以很多程序员在起名时都会陷入纠结和烦恼. 小Hi希望给新的项目起个拉风的名字.他希望这 ...

  9. http 和 ajax 的关系

    经常听到有人混淆两者之间的基本概念,认为只是毫无关系的两种东西. 其实ajax也属于http请求,只不过是http一共有两种请求,一种是同步,一种是异步当然也可以同步那就是ajax. 总所周知hhtp ...

  10. 算法实现c语言--03

    实现  mystrcpy(), mystrcmp(), mystrcat(), mystrlen() ; #include<stdio.h> #include<stdlib.h> ...