2016 长春东北赛---Coconuts(离散化+DFS)
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=5925
Now TanBig wants to know how many times he needs to eat all the good coconuts in the field, and how many coconuts he would eat each time(the area of each 4-connected component).
It is guaranteed that in the input data, the first row and the last row will not have bad coconuts at the same time, the first column and the last column will not have bad coconuts at the same time.
2
1
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
const int N=;
LL dx[N],dy[N];///表示每一格压缩的长度;
bool v[N][N];
int dir[][]={{,},{-,},{,},{,-}};
LL r,c;
int n; struct Node{
long long v,p;
int id;
}x[N],y[N]; bool cmp1(const Node s1,const Node s2){
return s1.v<s2.v;
}
bool cmp2(const Node s1,const Node s2){
return s1.id<s2.id;
} LL dfs(int sx,int sy)
{
LL sum=dx[sx]*dy[sy];
v[sx][sy]=true;
for(int i=;i<;i++){
int nx=sx+dir[i][];
int ny=sy+dir[i][];
if(nx>&&ny>&&nx<=r&&ny<=c)
if(!v[nx][ny]){
sum+=dfs(nx,ny);
}
}
return sum;
} int main()
{
int T,Case=;
cin>>T;
while(T--)
{
printf("Case #%d:\n",Case++);
scanf("%lld%lld%d",&r,&c,&n);
for(int i=;i<=n;i++)
{
scanf("%lld%lld",&x[i].v,&y[i].v);
x[i].id=i;
y[i].id=i;
}
sort(x+,x+n+,cmp1);
sort(y+,y+n+,cmp1);
x[n+].v=r; y[n+].v=c;
x[n+].id=y[n+].id=n+;
x[].v=y[].v=;
x[].id=y[].id=; int tot=;
dx[]=;
for(int i=;i<=n+;i++)
{
if(x[i].v==x[i-].v){
x[i].p=tot;
}
else if(x[i].v==x[i-].v+){
x[i].p=++tot;
dx[tot]=;
}
else {
x[i].p=tot+;
dx[tot+]=;
dx[tot+]=x[i].v-x[i-].v-;
tot+=;
}
}
r=tot;
tot=;
dy[]=;
for(int i=;i<=n+;i++)
{
if(y[i].v==y[i-].v){
y[i].p=tot;
}
else if(y[i].v==y[i-].v+){
y[i].p=++tot;
dy[tot]=;
}
else {
y[i].p=tot+;
dy[tot+]=;
dy[tot+]=y[i].v-y[i-].v-;
tot+=;
}
}
c=tot; memset(v,,sizeof(v));
sort(x+,x+n+,cmp2);
sort(y+,y+n+,cmp2);
for(int i=;i<=n;i++)
v[x[i].p][y[i].p]=true;
long long ans[N];
tot=;
for(LL i=;i<=r;i++)
for(LL j=;j<=c;j++)
if(!v[i][j])
ans[tot]=dfs(i,j),tot++;
sort(ans,ans+tot);
printf("%d\n",tot);
for(int i=;i<tot;i++)
printf("%lld%c",ans[i],(i+==tot)?'\n':' ');
}
return ;
}
2016 长春东北赛---Coconuts(离散化+DFS)的更多相关文章
- hdu 5925 Coconuts 离散化+dfs
Coconuts Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...
- 2016 大连网赛---Weak Pair(dfs+树状数组)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5877 Problem Description You are given a rooted ...
- 2016 CCPC 东北地区重现赛
1. 2016 CCPC 东北地区重现赛 2.总结:弱渣,只做出01.03.05水题 08 HDU5929 Basic Data Structure 模拟,双端队列 1.题意:模拟一个栈的操 ...
- 2015年ACM长春区域赛比赛感悟
距离长春区域赛结束已经4天了,是时候整理一下这次比赛的点点滴滴了. 也是在比赛前一周才得到通知要我参加长春区域赛,当时也是既兴奋又感到有很大的压力,毕竟我的第一场比赛就是区域赛水平,还是很有挑战性的. ...
- 2012年长春网络赛(hdu命题)
为迎接9月14号hdu命题的长春网络赛 ACM弱校的弱菜,苦逼的在机房(感谢有你)呻吟几声: 1.对于本次网络赛,本校一共6名正式队员,训练靠的是完全的自主学习意识 2.对于网络赛的群殴模式,想竞争现 ...
- HDU 5923 Prediction(2016 CCPC东北地区大学生程序设计竞赛 Problem B,并查集)
题目链接 2016 CCPC东北地区大学生程序设计竞赛 B题 题意 给定一个无向图和一棵树,树上的每个结点对应无向图中的一条边,现在给出$q$个询问, 每次选定树中的一个点集,然后真正被选上的是这 ...
- Aizu 0531 "Paint Color" (坐标离散化+DFS or BFS)
传送门 题目描述: 为了宣传信息竞赛,要在长方形的三合板上喷油漆来制作招牌. 三合板上不需要涂色的部分预先贴好了护板. 被护板隔开的区域要涂上不同的颜色,比如上图就应该涂上5种颜色. 请编写一个程序计 ...
- hdu4605 树状数组+离散化+dfs
Magic Ball Game Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 4816 Bathysphere (2013长春现场赛D题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 2013长春区域赛的D题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...
随机推荐
- telnet命令——连接服务器
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...
- Linux设置SFTP服务用户目录权限
我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...
- IIS集成模式下,URL重写后获取不到Session值
近期给公司网站添加了伪静态功能,但是今天发现了在伪静态的页面中,Session值是获取不到的. 原因是在伪静态请求的时候,Session请求被“过滤”掉了. 开始是把web.config文件中的mod ...
- Java 线程 — ConcurrentHashMap
ConcurrentHashMap ConcurrentHashMap 结构 采用了分段锁的方法提高COncurrentHashMap并发,一个map里面有一个Segment数组--即多个Segmen ...
- CCNA基础 IP地址子网划分
计算机是一个非常神奇的物品,它的核心算法是凌驾于任何代码架构.然而互联网网络( Internat )作为整个生态的基础资源.什么?你还不会子网划分? 没关系,看到子网掩码不要怕.因为它无非就是问你 & ...
- Implementation Model Editor of AVEVA in OpenSceneGraph
Implementation Model Editor of AVEVA in OpenSceneGraph eryar@163.com 摘要Abstract:本文主要对工厂和海工设计软件AVEVA的 ...
- .NET面试题解析(06)-GC与内存管理
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 GC作为.NET的重要核心基础,是必须要了解的.本文主要侧重于GC内存管理中的一些关键点,如要要全面深入了 ...
- 34988 Happy Reversal(二进制去取反)
/* 题意:给多个二进制数,对某些数进行按位取反操作! 然后从中找到最大数和最小数,并输出他们的差值! 注意:所有的数都是整数,包括取反之后 思路:一个n为二进制数x,令tmp为n位全1!则 y=tm ...
- ECshop 快捷登录插件 支持QQ 支付宝 微博
亲自测试可以使用,分享给大家.(承接各种EcShop改版,二次开发等相关项目 QQ:377898650) 安装的时候按照里面说明.安装即可. 代码下载:http://pan.baidu.com/s/1 ...
- Java多线程系列--“JUC线程池”02之 线程池原理(一)
概要 在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构.线程池的实现类是ThreadPoolExecutor类.本章,我们通过分析Th ...