zoukankan      html  css  js  c++  java
  • 51nod1276(xjb)

    题目链接: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+10;
     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=1;
    23     scanf("%d%d", &n, &m);
    24     for(int i=0; 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=0; 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=0;
    36     for(int i=0; i<m; i++){
    37         while(gg[indx].value<=a[i]&&indx<n){
    38             int cc=gg[indx].num;
    39             if(cc==0||cc==n-1){//注意边界情况
    40                 if(cc==0){
    41                     if(value[cc]>value[cc+1]) ans--;
    42                 }else{
    43                     if(value[cc]>value[cc-1]) ans--;
    44                 }
    45             }else{
    46                 if(value[cc]<value[cc-1]&&value[cc]<value[cc+1]){
    47                     ans++;
    48                 }else if(value[cc]>value[cc-1]&&value[cc]>value[cc+1]){
    49                     ans--;
    50                 }
    51             }
    52             indx++;
    53         }
    54         mp[a[i]]=ans;
    55     }
    56     for(int i=0; i<m; i++){
    57         printf("%d
    ", mp[b[i]]);
    58     }
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    Linux下CVS安装和配置
    新开Blog 哈哈
    XP项目配置管理(1)——服务系统配置篇
    Perl中数组和哈希表的用法小结
    如何删除windows服务zz
    Java Thread
    [游戏开发]准备基于Starling开发
    make menuconfig 依赖的包
    ANDROID LOGO和动画制作
    cscope ctags
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/6690246.html
Copyright © 2011-2022 走看看