HDU3634(矩形切割)
题目:City Planning
注意本题应该用value值高的去覆盖低的。
#include <stdio.h>
#include <string.h>
#include <algorithm>using namespace std;const int N = 205;#define LL long longtypedef struct
{LL x1,y1;LL x2,y2;LL sum;LL v;
}Node;Node T[N];LL n;bool cmp(Node a,Node b)
{return a.v<b.v;
}void Cover(LL x1,LL y1,LL x2,LL y2,LL k,LL c)
{while(k<n&&(x1>=T[k].x2||x2<=T[k].x1||y1>=T[k].y2||y2<=T[k].y1)) k++;if(k>=n){T[c].sum+=(x2-x1)*(y2-y1)*T[c].v;return;}if(x1<T[k].x1){Cover(x1,y1,T[k].x1,y2,k+1,c);x1=T[k].x1;}if(x2>T[k].x2){Cover(T[k].x2,y1,x2,y2,k+1,c);x2=T[k].x2;}if(y1<T[k].y1){Cover(x1,y1,x2,T[k].y1,k+1,c);y1=T[k].y1;}if(y2>T[k].y2){Cover(x1,T[k].y2,x2,y2,k+1,c);y2=T[k].y2;}
}int main()
{LL i,k=1,t;scanf("%I64d",&t);while(t--){scanf("%d",&n);memset(T,0,sizeof(T));for(i=0;i<n;i++){T[i].v=0;scanf("%I64d%I64d%I64d%I64d%I64d",&T[i].x1,&T[i].y1,&T[i].x2,&T[i].y2,&T[i].v);T[i].sum=0;}stable_sort(T,T+n,cmp);for(i=n-1;i>=0;i--)Cover(T[i].x1,T[i].y1,T[i].x2,T[i].y2,i+1,i);LL ans=0;for(i=0;i<n;i++)ans+=T[i].sum;printf("Case %I64d: %I64d\n",k++,ans);}return 0;
}
HDU3634(矩形切割)相关推荐
- Poj 1151-Atlantis 矩形切割
题目:http://poj.org/problem?id=1151 Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- POJ3277(矩形切割)
题目:City Horizon 题意:实际上就是求面积的并.因为是面积和的问题,所以越宽越高的肯定应该放在后面,低的先被覆盖. 以后在做矩形切割题目的时候最好先排序,那样不容易超时. #include ...
- POJ1151(矩形切割入门题)
题目:Atlantis 我的上一篇文章已经讲明了线段切割的思想,矩形切割就是把线段切割从一维推到二维就行了,思想都一样. #include <stdio.h> #include <s ...
- 算法学习之——矩形切割思想
算法学习之--矩形切割思想 MPS [定义 Define] 对于求解若干个矩形的面积的交集 ...
- 【数学】C107_LQ_报纸页数 平方怪圈 猴子分香蕉 方格计数 矩形切割(归纳法 | 打印归纳)
一.报纸页数 X星球日报和我们地球的城市早报是一样的,都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12,可以确定它应该是最上边的第2张报纸.我们在太空中 ...
- usaco Section 3.1 Shaping Regions -- 矩形切割
听说这道题用矩形切割做,于是学习了2004薛矛的oi论文. 我的做法是:弄一个白纸集合,开始里面只有一张白纸(0,0) (A,B).然后把输入的N个矩形倒序地,每一个都与白纸集合中的所有白纸依次切割. ...
- 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - B. 矩形切割
题目链接:https://www.lanqiao.cn/courses/2786/learning/?id=67815 Ideas 对于一个矩形来说,能切割下来的正方形肯定是以较短的那条边为边长,然后 ...
- 蓝桥杯练习算法题(矩形切割成正方形)
书山有路勤为径,学海无涯苦作舟 点赞再看,养成习惯 目录 1.前言 2.题目 3.代码 3.前言: 最近在准备即将到来的蓝桥杯比赛,拼命刷题,锻炼解题的算法,俗话说熟能生巧,现在的是去做大量的题目,来 ...
- 蓝桥杯矩形切割python求解
[问题描述] 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形. 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方 ...
最新文章
- 在Ubuntu 14.04 64bit下用Python搭建数据科学研究环境
- 聊聊flink的OperatorStateBackend
- linux下删除带特殊符号文件的方法
- golang Reflect包
- Sylius不需要缓存使用默认地址
- Linux修改文件/目录权限
- SSM实现根据后台控制禁用select
- nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
- OpenCV使用Laplace运算符检测边缘的实例(附完整代码)
- scrapy+mysql+pipeline+更新数据_python3+Scrapy爬虫实战(二)—— 使用pipeline数据保存到文本和数据库(mysql)...
- [ZJOI2006]超级麻将
- 你掉进过“伪敏捷”的陷阱吗?
- mysql表添加字段_怎么给mysql数据表添加字段
- TPC_mcgs打印方案
- Java 获取Excel中的表单控件
- 3D动作绑定_【动捕小灶】动作捕捉数据应用到动画流程详解
- linux free空闲内存用尽,Linux中显示空闲内存空间的free命令的基本用法
- 算法题(六十二)头条2017年笔试题——头条校招
- 社区发现研究现状(一)
- 公公的MC开服启程之路