题目: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(矩形切割)相关推荐

  1. Poj 1151-Atlantis 矩形切割

    题目:http://poj.org/problem?id=1151 Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissio ...

  2. POJ3277(矩形切割)

    题目:City Horizon 题意:实际上就是求面积的并.因为是面积和的问题,所以越宽越高的肯定应该放在后面,低的先被覆盖. 以后在做矩形切割题目的时候最好先排序,那样不容易超时. #include ...

  3. POJ1151(矩形切割入门题)

    题目:Atlantis 我的上一篇文章已经讲明了线段切割的思想,矩形切割就是把线段切割从一维推到二维就行了,思想都一样. #include <stdio.h> #include <s ...

  4. 算法学习之——矩形切割思想

    算法学习之--矩形切割思想                                                      MPS [定义 Define]   对于求解若干个矩形的面积的交集 ...

  5. 【数学】C107_LQ_报纸页数 平方怪圈 猴子分香蕉 方格计数 矩形切割(归纳法 | 打印归纳)

    一.报纸页数 X星球日报和我们地球的城市早报是一样的,都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12,可以确定它应该是最上边的第2张报纸.我们在太空中 ...

  6. usaco Section 3.1 Shaping Regions -- 矩形切割

    听说这道题用矩形切割做,于是学习了2004薛矛的oi论文. 我的做法是:弄一个白纸集合,开始里面只有一张白纸(0,0) (A,B).然后把输入的N个矩形倒序地,每一个都与白纸集合中的所有白纸依次切割. ...

  7. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - B. 矩形切割

    题目链接:https://www.lanqiao.cn/courses/2786/learning/?id=67815 Ideas 对于一个矩形来说,能切割下来的正方形肯定是以较短的那条边为边长,然后 ...

  8. 蓝桥杯练习算法题(矩形切割成正方形)

    书山有路勤为径,学海无涯苦作舟 点赞再看,养成习惯 目录 1.前言 2.题目 3.代码 3.前言: 最近在准备即将到来的蓝桥杯比赛,拼命刷题,锻炼解题的算法,俗话说熟能生巧,现在的是去做大量的题目,来 ...

  9. 蓝桥杯矩形切割python求解

    [问题描述] 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形. 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方 ...

最新文章

  1. 在Ubuntu 14.04 64bit下用Python搭建数据科学研究环境
  2. 聊聊flink的OperatorStateBackend
  3. linux下删除带特殊符号文件的方法
  4. golang Reflect包
  5. Sylius不需要缓存使用默认地址
  6. Linux修改文件/目录权限
  7. SSM实现根据后台控制禁用select
  8. nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
  9. OpenCV使用Laplace运算符检测边缘的实例(附完整代码)
  10. scrapy+mysql+pipeline+更新数据_python3+Scrapy爬虫实战(二)—— 使用pipeline数据保存到文本和数据库(mysql)...
  11. [ZJOI2006]超级麻将
  12. 你掉进过“伪敏捷”的陷阱吗?
  13. mysql表添加字段_怎么给mysql数据表添加字段
  14. TPC_mcgs打印方案
  15. Java 获取Excel中的表单控件
  16. 3D动作绑定_【动捕小灶】动作捕捉数据应用到动画流程详解
  17. linux free空闲内存用尽,Linux中显示空闲内存空间的free命令的基本用法
  18. 算法题(六十二)头条2017年笔试题——头条校招
  19. 社区发现研究现状(一)
  20. 公公的MC开服启程之路

热门文章

  1. 委派模式与策略模式综合应用
  2. 分布式事务中的Base理论
  3. webpack打包js文件
  4. (常用API)正则表达式的概念和作用
  5. 用户关联角色操作-代码实现
  6. 函数的返回值-接收返回元组函数的方式
  7. 原型模式codeing
  8. 在Linux系统终端利用ggc,大学计算机:Linux下C编程.pdf
  9. Altium Designer 18/AD 设置禁止布线层和铜皮或者其他线之间的间距
  10. ArcGIS特殊标注效果的简单实现