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题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...
随机推荐
- vs如何在C++中调用Lua
最近Cocos2dx的学习卡壳了,一般的照抄代码我不想写上来,但想示例也想得我头晕...为了放松大脑调整状态于是开始学习Lua.Lua的语法学习还是比较简单的,学过javascript或者vbscri ...
- SQL Server 2012 数据库笔记
慕课网 首页 实战 路径 猿问 手记 Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...
- fir.im Weekly - Swift 3.0 的迁移适配指南
无论你是移动开发者,还是桌面端开发者,或者正在IoT领域探索的技术人员,那么应该更加关注 iDev 全平台开发者大会,也许是后半年 iOS 开发者最盛大的技术盛宴.既有知名公司带来专业视野,又有从 S ...
- iOS-旧项目中手动内存管理(MRC)转ARC
在ARC之前,iOS内存管理无论对资深级还是菜鸟级开发者来说都是一件很头疼的事.我参 加过几个使用手动内存管理的项目,印象最深刻的是一个地图类应用,由于应用本身就非常耗内存,当时为了解决内存泄露问题, ...
- WPF入门教程系列九——布局之DockPanel与ViewBox(四)
七. DockPanel DockPanel定义一个区域,在此区域中,您可以使子元素通过描点的形式排列,这些对象位于 Children 属性中.停靠面板其实就是在WinForm类似于Dock属性的元 ...
- jQuery LigerUI 最新版压缩包(含chm帮助文档、源码、donet权限示例)
jQuery LigerUI 最新版压缩包 http://download.csdn.net/download/heyin12345/4680593 jQuery LigerUI 最新版压缩包(含ch ...
- 快速入门系列--WCF--01基础概念
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- SSIS Send Mail
在SSIS中Send Mail的方法主要有三种,使用Send Mail Task,使用Script Task和使用存储过程msdb.dbo.sp_send_dbmail. 一,使用Send Mail ...
- Node学习
参见Node入门 做出node应用的第一个例子 图片上传浏览.
- 使用bokeh-scala进行数据可视化
目录 前言 bokeh简介及胡扯 bokeh-scala基本代码 我的封装 总结 一.前言 最近在使用spark集群以及geotrellis框架(相关文章见http://www.cnbl ...