岛屿的数量
来源:互联网 发布:武汉聚友网络 编辑:程序博客网 时间:2024/04/30 05:24
有N个岛连在一起形成了一个大的岛屿,如果海平面上升超过某些岛的高度时,则这个岛会被淹没。原本的大岛屿则会分为多个小岛屿,如果海平面一直上升,则所有岛都会被淹没在水下。
给出N个岛的高度。然后有Q个查询,每个查询给出一个海平面的高度H,问当海平面高度达到H时,海上共有多少个岛屿。例如:
岛屿的高度为:{2, 1, 3, 2, 3}, 查询为:{0, 1, 3, 2}。
当海面高度为0时,所有的岛形成了1个岛屿。
当海面高度为1时,岛1会被淹没,总共有2个岛屿{2} {3, 2, 3}。
当海面高度为3时,所有岛都会被淹没,总共0个岛屿。
当海面高度为2时,岛0, 1, 3会被淹没,总共有2个岛屿{3} {3}。
Input
第1行:2个数N, Q中间用空格分隔,其中N为岛的数量,Q为查询的数量(1 <= N, Q <= 50000)。第2 - N + 1行,每行1个数,对应N个岛屿的高度(1 <= A[i] <= 10^9)。第N + 2 - N + Q + 1行,每行一个数,对应查询的海平面高度(1 <= Q[i] <= 10^9)。
Output
输出共Q行,对应每个查询的岛屿数量。
Input示例
5 4213230132
Output示例
1202
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 5e4 + 10;struct Land{ int val; int index;};int N, Q;Land a[MAXN];Land b[MAXN];bool flag[MAXN];int result[MAXN];bool cmp(const Land &left, const Land &right){ return left.val < right.val; }int main(){ cin >> N >> Q; for (int i = 0; i < N; i++) { cin >> a[i].val; a[i].index = i + 1; } sort(&a[0], &a[N], cmp); for (int i = 0; i < Q; i++) { cin >> b[i].val; b[i].index = i; } sort(&b[0], &b[Q], cmp); memset(flag, false, sizeof(flag)); flag[0] = true; flag[N+1] = true; int j = 0; int sum = 1; for (int i = 0; i < Q; i++) { int height = b[i].val; for (; j < N; j++) { if (height < a[j].val) { break; } else { int pos = a[j].index; flag[pos] = true; if ((!flag[pos-1]) && (!flag[pos+1])) { sum++; } else if (flag[pos-1] && flag[pos+1]) { sum--; } } } result[b[i].index] = sum; } for (int i = 0; i < Q; i++) { cout << result[i] << endl; } return 0;}
阅读全文
0 0
- 1276 岛屿的数量
- 岛屿的数量
- LeetCode之岛屿的数量
- 岛屿的数量(思维)
- 岛屿的数量 51Nod
- 岛屿的数量 51Nod
- 51nod 1276:岛屿的数量 (贪心)
- 51NOD 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod-【1276 岛屿的数量】
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51Nod-1276-岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod 1276:岛屿的数量 很好玩的题目
- 51nod 1276 岛屿的数量(思维题)
- 51NOD 1276 岛屿的数量(脑洞 + 思维)
- maven工程将main函数打成jar包
- 第五届“图灵杯”NEUQ-ACM程序设计大赛 H题 深搜
- HTTP协议详解
- 新的征程,2018学习编程
- 【十】ArcGIS API for Javascript之专题图的制作(六)
- 岛屿的数量
- 20171209:面向对象:类和对象,方法的重载
- 期末考试之排名次
- 基于二进制编码的遗传算法求解函数最大值
- Caffe 关闭日志输出
- 关于android开发串口
- mybatis系列八:一对多关联查询
- smarTTY 使用 公钥 ( public ssh key ) 设置免密远程登录
- 【MongoDb学习之路】Java利用MongoClient类连接MongoDB数据库