bzoj 1102
思路:用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的更多相关文章
- [原博客] POI系列(2)
正规.严谨.精妙. -POI bzoj 1098 : [POI2007]办公楼biu 如果把互相有手机号的建边得到一个无向图,那么这个图的补图的连通分量个数就是答案了.因为互相没手机号的必然在同一个连 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
随机推荐
- isNaN与parseInt/parseFloat
isNaN 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字). NaN 即 Not a Number isNaN(numValue) 必选项 numvalue 参数为要检查 ...
- shell多进程的实现
需求:多个脚本彼此互不干涉,同时运行,节省时间 菜鸟级实现: #!/bin/sh dir="/data/test" $dir/sbin/test1.sh >> $dir ...
- Spring 多数据源 @Transactional 注解事务管理
在 Spring,MyBatis 下两个数据源,通过 @Transactional 注解 配置简单的事务管理 spring-mybatis.xml <!--******************* ...
- 图论&数学:拉姆齐(Ramsey)定理
拉姆齐(Ramsey)定理是要解决以下的问题:要找这样一个最小的数n,使得n个人中必定有k个人相识或l个人互不相识 我们所知道的结论是这样的 6 个人中至少存在3人相互认识或者相互不认识. 该定理等价 ...
- HDU 6061 推导 NTT
复函数,递归代入,可以得到最终的式子为$f(x-\sum_{i=1}^{m}{a_i})$,且$f(x) = \sum_{i = 0}^{n}{c_ix^i}$,求最终各个x项的系数. 设$S=\su ...
- 【费用流】【CODEVS】1227 方格取数2
[算法]最小费用最大流(费用流) [题解] 费用流:http://www.cnblogs.com/onioncyc/p/6496532.html 本题构图: 在有限的k次行走中尽可能多的拿到数字,明显 ...
- 读书笔记 ~ Python黑帽子 黑客与渗透测试编程之道
Python黑帽子 黑客与渗透测试编程之道 <<< 持续更新中>>> 第一章: 设置python 环境 1.python软件包管理工具安装 root@star ...
- react系列一,react虚拟dom如何转成真实的dom
react,想必作为前端开发一定不陌生,组件化以及虚拟dom使得react成为最受欢迎额前端框架之一.我们知道react是基于虚拟dom的,但是什么是虚拟dom呢,其实就是一组js对象,那么我们今天就 ...
- 网络抓包wireshark(转)
下载地址:https://www.wireshark.org/download/win64/ 抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过 ...
- webpack中的静态资源处理
你可能已经注意到,在我们的项目结构里,有两个静态文件的路径,分别是:src/assets 和 static/.那这两个到底有什么区别呢? Webpacked 资源 为了回答这个问题,我们首先需要理解w ...