51nod 1276 岛屿的数量(思维)
来源:互联网 发布:淘宝怎么买图片空间 编辑:程序博客网 时间:2024/05/17 05:14
这道题需要先排序再对比,然后统一输出答案,不然会超时
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define LL long long#define MOD 1000000007#define M 50010#define INF 0x3f3f3f3fstruct node{ int u, pos;};node no[M], ne[M];bool cmp(node t1, node t2){ return t1.u < t2.u;}int main(){ int n, q, a[M], sum, down, up; while(scanf("%d%d", &n, &q) != EOF) { int top = 0; down = INF; up = 0; for(int i=0; i<n; i++) { scanf("%d", &no[i].u); no[i].pos = i; } for(int i=0; i<q; i++) { scanf("%d", &ne[i].u); ne[i].pos = i; } sort(ne, ne+q, cmp); sort(no, no+n, cmp); int j = 0; bool vis[M]; memset(vis, 0, sizeof(vis)); sum = 1; for(int i=0; i<q; i++) { while(no[j].u <= ne[i].u && j < n) { if(!no[j].pos) { if(vis[1]) { sum--;//最左边且旁边的被淹没 } } else if(no[j].pos == n-1) { if(vis[n-2]) { sum--;//最右边 } } else { if(vis[no[j].pos-1] && vis[no[j].pos+1])//考虑两边都已经被淹 { sum--; } if(!vis[no[j].pos-1] && !vis[no[j].pos+1])//两边都没有被淹 { sum++; } //只有只有一边被淹的相当于没有变化 } vis[no[j].pos] = 1;//记录被淹的 j++; } a[ne[i].pos] = sum;//记录该询问 } for(int i=0; i<q; i++) { printf("%d\n", a[i]); } } return 0;}
0 0
- 51nod 1276 岛屿的数量(思维题)
- 51nod 1276 岛屿的数量(思维)
- 51NOD 1276 岛屿的数量(脑洞 + 思维)
- 51nod 1276 岛屿的数量【思维】好题~
- 51NOD 1276 岛屿的数量(脑洞+思维)
- 51nod 1276 岛屿的数量(贪心策略__锻炼思维)
- 51nod 1276:岛屿的数量 (贪心)
- 51NOD 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod-【1276 岛屿的数量】
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量
- 51Nod-1276-岛屿的数量
- 51nod 1276 岛屿的数量
- 51nod 1276 岛屿的数量(乱搞)
- 岛屿的数量 51Nod
- 岛屿的数量 51Nod
- 【Web前端】CSS 选择器之 last-child 与 last-of-type
- css绝对定位、相对定位和文档流的那些事
- 对象学习
- python 安装easy_install方法
- 鸟哥的linux私房菜学习笔记《四》忘记root密码
- 51nod 1276 岛屿的数量(思维)
- Thinkphp+同步条件查询+分页应用
- iOS混合开发调试秘籍
- 校招笔试面试常考的数据库知识
- python 使用ssh scp做个升级程序
- 剑指offer:替换空格
- CentOS7搭建dev-stack环境
- 抽象工厂模式
- 教你打造一个万能的适配器