51nod 1276 岛屿的数量
来源:互联网 发布:sql的count 1 编辑:程序博客网 时间:2024/05/16 11:30
参考:http://blog.csdn.net/qingshui23/article/details/51867942
我先用rmq+dfs做的,超时。。。然后看了看讨论,没看懂讨论的啥,看了题解后,才明白。原来这题是用的离线做法,先把所有查询都读取进来后再进行处理,这样时间复杂度就很低了。第一次遇到这样做的题目,涨知识。
#include <bits/stdc++.h>using namespace std;const int MAXN = 5e4+10;struct node{ int pos,val; bool operator<(const node& b)const{return val < b.val;}};node a[MAXN],q[MAXN];int res[MAXN];bool vis[MAXN];int main(){ ios::sync_with_stdio(false); int n,qq; cin >> n >> qq; for(int i = 0; i < n; ++i) { cin >> a[i].val; a[i].pos = i; } for(int i = 0; i < qq; ++i) { cin >> q[i].val; q[i].pos = i; } sort(a,a+n); sort(q,q+qq); int j = 0; int sum = 1; for(int i = 0; i < qq; ++i) { while(a[j].val <= q[i].val && j < n) { if(a[j].pos == 0) { if(vis[1]) sum--; } else if(a[j].pos == n-1) { if(vis[n-2]) sum--; } else { if(vis[a[j].pos-1] && vis[a[j].pos+1]) sum--; else if(!vis[a[j].pos-1] && !vis[a[j].pos+1]) sum++; } vis[a[j].pos] = true; ++j; } res[q[i].pos] = sum; } for(int i = 0; i < qq; ++i) cout << res[i] << endl; return 0;}
阅读全文
0 0
- 51nod 1276:岛屿的数量 (贪心)
- 51NOD 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod-【1276 岛屿的数量】
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51Nod-1276-岛屿的数量
- 51nod 1276 岛屿的数量
- 岛屿的数量 51Nod
- 岛屿的数量 51Nod
- 51nod 1276:岛屿的数量 很好玩的题目
- 51nod 1276 岛屿的数量(思维题)
- 51NOD 1276 岛屿的数量(脑洞 + 思维)
- 51Nod-1276-岛屿的数量
- 51nod 1276 岛屿的数量(乱搞)
- 51nod 1276 岛屿的数量 By Assassin
- 51nod 1276 岛屿的数量【思维】好题~
- 严蔚敏 数据结构C语言 银行排队队列 离散事件模拟
- 结构体内存对齐
- L2-014. 列车调度
- 命令每天一小步--ls命令
- MyEclipse加载web工程Tomcat能跑,项目加载不出来
- 51nod 1276 岛屿的数量
- # 我也不知道对不对 # 迈阶梯
- TCP如何保证可靠性
- 干货2:头指针链表
- 字符串的最长回文子串
- java中的单例模式
- L2-015. 互评成绩
- 【笔记】编译报错error: cannot convert ‘main(int, char**)::sockadrr*’ to ‘const sockaddr*’ for
- 利用virtualenv给管理python的多环境.(MAC亲测,简单几步即可,指定python版本)