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题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...
随机推荐
- node.js 简介
简介: Node,是一个可以让 JavaScript 运行在服务器端的平台.它可以让 JavaScript 脱离浏览器的束缚运行在一般的服务器环境下 Node.js 是一个为实时Web ...
- react6 事件传递参数
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- CMD复制文件夹
CMD复制文件夹 xcopy /E/I/Y "D:\GitHub\WIP\app" "D:\GitHub\WIP_server\html\webshell"
- 大型.NET商业软件代码保护技术 技术与实践相结合保护辛苦创造的劳动成果
列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题.有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬 ...
- 截取js数组中某段值(slice)
// var a = [1,2,3]; // console.log(a.slice(1)); >>[2, 3] 从索引1开始截取. // console.log(a.slice(1,2) ...
- Mysql存储过程语法
一口气弄完了! 一.条件语句if-then-else: create procedure demo_1(in param int) begin declare var int; ; then inse ...
- photoshop学习目录
前面的话 前端工程师最基本的工作是切图.photoshop用的6不6,对于工作效率有很大的影响.小火柴将前端工程师需要掌握的photoshop的知识和技能进行了梳理和归纳,总结成以下目录 目录 前端工 ...
- 用命令行编译java并生成可执行的jar包
用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...
- poj1330Nearest Common Ancestors 1470 Closest Common Ancestors(LCA算法)
LCA思想:http://www.cnblogs.com/hujunzheng/p/3945885.html 在求解最近公共祖先为问题上,用到的是Tarjan的思想,从根结点开始形成一棵深搜树,非常好 ...
- 《BI那点儿事》Microsoft 决策树算法
Microsoft 决策树算法是由 Microsoft SQL Server Analysis Services 提供的分类和回归算法,用于对离散和连续属性进行预测性建模.对于离散属性,该算法根据数据 ...