UVA 1665 Islands
来源:互联网 发布:怎样提升淘宝店铺等级 编辑:程序博客网 时间:2024/05/21 15:45
题意:输入一个n*m矩阵,每个格子都有一个正整数,再输入T个整数ti,对于每个ti,输出大于ti的正整数组成多少个四连快
思路:正着做的话其实相当于删除连通块,而如果反着做的话就相当于变成增加连通块,把格子都编号然后排序,用并查集
#include<bits/stdc++.h>using namespace std;const int maxn = 1005;const int maxq = 1e5+1;int pre[maxn*maxn];int Find(int x){return x==pre[x]?x:pre[x]=Find(pre[x]);}struct Node{int x,y;int val;}nodes[1005*1005];int mapp[maxn][maxn];int qq[maxq];int n,m;int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};bool cmp(Node a,Node b){return a.val<b.val;}int main(){ int T;scanf("%d",&T);while (T--){scanf("%d%d",&n,&m);for (int i = 0;i<n;i++)for (int j = 0;j<m;j++){scanf("%d",&mapp[i][j]);int pos = i*m+j;nodes[pos].x=i;nodes[pos].y=j;nodes[pos].val=mapp[i][j];}int ans = 0;int q;scanf("%d",&q);for (int i = 0;i<q;i++)scanf("%d",&qq[i]);memset(pre,-1,sizeof(pre));sort(nodes,nodes+n*m,cmp);int k = n*m-1;for (int i = q-1;i>=0;i--){if (qq[i]< nodes[k].val){while (k>=0 && qq[i]<nodes[k].val){int pos = nodes[k].x*m+nodes[k].y; if (!~pre[pos])pre[pos]=pos,ans++;for (int di=0;di<4;di++){ int dx = nodes[k].x+dir[di][0];int dy = nodes[k].y+dir[di][1];if (dx>=0 && dx<n&&dy>=0&&dy<m&&mapp[dx][dy]>qq[i]){int ppos = dx*m+dy; if (~pre[ppos]) { int u = Find(ppos); int v = Find(pos); if (u!=v) pre[u]=v,ans--; }}}k--;}if (k<0){for (;i>=0;i--){qq[i]=ans;}break;} }qq[i]=ans; } for (int i = 0;i<q;i++)printf("%d ",qq[i]);printf("\n");}}
0 0
- UVA 1665 Islands
- Islands UVA
- UVa 3721 - Islands 【bfs】
- Islands
- islands
- UVA Live 7958 (Codeforces Gym 101201G) Maximum Islands 二分图染色+匹配
- zoj Islands
- 岛屿Islands
- 计蒜客 Islands
- [pku2288]Islands and Bridges
- poj 2288 Islands
- POJ 3771 World Islands
- uestc oj 1223 Islands
- hdu 3405 world islands
- sicily 9095 Islands
- 中大 9095. Islands
- hdu 3405 World Islands
- POJ3608-Bridge Across Islands
- 剑指offer 面试题22:栈的压入、弹出序列 题解
- CodeForces 447B---DZY Loves Strings
- Leetcode——populating-next-right-pointers-in-each-node
- Numpy中矩阵对象(matrix)
- C++ STL Map 学习报告
- UVA 1665 Islands
- jQuery+CSS3实现图片的无缝轮播
- AlertDialog的简单封装
- 开源tinyXMl和OpenCV读写XML文件对比
- Java学习笔记-接口和抽象类
- Android 自定义相机 切换相机 参考线(辅助线) 闪光灯 缩放 自动聚焦 Demo
- matlab2013a安装libsvm3.21
- CodeForces 622A
- boost::atomic