思路:用dfs 会爆栈,巨坑,要用bfs。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define piii pair<int, pair<int,int> > using namespace std; const int N = + ;
const int M = + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; int n, ans1, ans2, s[N][N], mx[N][N], mn[N][N];
int dx[] = {, -, , , , , -, -};
int dy[] = {, , , -, , -, , -}; bool vis[N][N]; bool bfs1(int sx, int sy) {
queue<pii> que;
vis[sx][sy] = true; que.push(mk(sx, sy)); bool flag = true;
while(!que.empty()) {
pii u = que.front(), v;
que.pop();
if(mx[u.fi][u.se] > s[u.fi][u.se]) {
flag = false;
} for(int i = ; i < ; i++) {
v.fi = u.fi + dx[i];
v.se = u.se + dy[i];
if(v.fi < || v.fi > n || v.se < || v.se > n || vis[v.fi][v.se] || s[v.fi][v.se] != s[u.fi][u.se])
continue;
vis[v.fi][v.se] = true;
que.push(v);
}
}
return flag;
} bool bfs2(int sx, int sy) {
queue<pii> que;
vis[sx][sy] = true; que.push(mk(sx, sy)); bool flag = true;
while(!que.empty()) {
pii u = que.front(), v;
que.pop();
if(mn[u.fi][u.se] < s[u.fi][u.se]) {
flag = false;
} for(int i = ; i < ; i++) {
v.fi = u.fi + dx[i];
v.se = u.se + dy[i];
if(v.fi < || v.fi > n || v.se < || v.se > n || vis[v.fi][v.se] || s[v.fi][v.se] != s[u.fi][u.se])
continue;
vis[v.fi][v.se] = true;
que.push(v);
}
} return flag;
} int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
scanf("%d", &s[i][j]);
mx[i][j] = mn[i][j] = s[i][j];
}
} for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
for(int k = ; k < ; k++) {
int x = i + dx[k];
int y = j + dy[k];
if(x < || x > n || y < || y > n)
continue; mx[i][j] = max(mx[i][j], s[x][y]);
mn[i][j] = min(mn[i][j], s[x][y]);
}
}
} ans1 = , ans2 = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
if(!vis[i][j]) {
ans1 += bfs1(i, j);
}
}
} memset(vis, false, sizeof(vis)); for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
if(!vis[i][j]) {
ans2 += bfs2(i, j);
}
}
} printf("%d %d\n", ans1, ans2);
return ;
}

bzoj 1102的更多相关文章

  1. [原博客] POI系列(2)

    正规.严谨.精妙. -POI bzoj 1098 : [POI2007]办公楼biu 如果把互相有手机号的建边得到一个无向图,那么这个图的补图的连通分量个数就是答案了.因为互相没手机号的必然在同一个连 ...

  2. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  3. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  4. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  5. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  6. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  7. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

  8. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  9. 【splay】文艺平衡树 BZOJ 3223

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3  ...

随机推荐

  1. OpenCV---轮廓发现

    推文:OpenCV-Python教程(11.轮廓检测) 轮廓发现 是基于图像边缘提取的基础,寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓的发现 相关API findContours 发现轮 ...

  2. js闭包及问题的解决

    闭包定义,作用 闭包就是能够读取其他函数内部变量的函数. 作用:一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中 缺点:闭包会保存函数中的变量在内存中,导致内存消耗大   闭包会 ...

  3. Centos下 自动化配置SSH免密码登陆

    hosts文件,存储要部署的节点IP地址,其中以#开头表示注释掉 192.168.101.52 192.168.101.53 192.168.101.54 192.168.101.55 192.168 ...

  4. fastjson的@JSONField注解的一点问题

    @JSONField 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用Field @JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...

  5. fastreport中文乱码问题

    fastreport的中文乱码问题,确实让人头疼,我使用的是delphi6+fastrepport4.7,在4.7版本中,主要表现在以下几种情况. 预览不乱码,保存乱码. 简体不乱码,繁体乱码. 简体 ...

  6. jQuery面向对象的写法

    定义的写法 //构造函数 function test(){ //construct code } //初始化方法 test.prototype.init = function(){ //init co ...

  7. windows 安装elasticsearch-head插件

    es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装) (一)从地址:https://nodejs.org/en/download/ 下载相应系统的msi,双击 ...

  8. [BZOJ1911][BZOJ1912][BZOJ1913]APIO2010解题报告

    特别行动队 Description   这个好像斜率优化不是一般地明显了啊...只不过要分a的正负两种情况考虑是维护上凸还是下凸 /********************************** ...

  9. 使用inline-block,使前面img,后面空div居中显示在一行后,导致当div中有内容时,div下移问题

    .pro_li img,.pro_sm{display: inline-block; *display:inline;*zoom:1;vertical-align: middle ;} 解决方法:使用 ...

  10. Sublime删除项目删不掉?

    最近用sublime进行项目的开发,感觉懵逼的像个小白菜~~ 今天遇到的问题可是一个超级白痴的问题,sublime的空白项目文件夹怎么都删不掉,我的傻逼操作是:选中文件--->Delete--- ...