HDU 2461 Rectangles#容斥原理
http://acm.hdu.edu.cn/showproblem.php?pid=2461
题目很简单,但是由于询问数M可以很大,所以容易超时,这道题学到了在结构体里面写函数的方法,这样子效率更高,否则的话,这道题就TLE了。
根据容斥原理,先把每个小长方形的面积加上,然后看有没有与该小长方形相交的,用dfs实现,当相交面积为0时,则不进行dfs,且同样遵循奇加偶减(但代码里因为是以第二个作为depth=1开始进行dfs的,所以是奇减偶加)。
AC代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std;struct Node {int x1,x2,y1,y2;Node cross(Node &R){Node tmp;tmp.x1=max(x1,R.x1);tmp.y1=max(y1,R.y1);tmp.x2=min(x2,R.x2);tmp.y2=min(y2,R.y2);return tmp;}int area(){if(x1>=x2||y1>=y2) return 0;return (x2-x1)*(y2-y1);} }node[25];int num,r[25],ans; void dfs(int depth,Node R,int index) {Node tmp;for(int i=index;i<=num;i++){tmp=R.cross(node[r[i]]);if(tmp.area()){if(depth&1)ans-=tmp.area();else ans+=tmp.area();dfs(depth+1,tmp,i+1);}} }int main() {int n,m,cas=0;while(scanf("%d%d",&n,&m)&&n+m){cas++;for(int i=1;i<=n;i++)scanf("%d%d%d%d",&node[i].x1,&node[i].y1,&node[i].x2,&node[i].y2);printf("Case %d:\n",cas);for(int i=1;i<=m;i++){ans=0;scanf("%d",&num);for(int j=1;j<=num;j++)scanf("%d",&r[j]);for(int j=1;j<=num;j++){ans+=node[r[j]].area();dfs(1,node[r[j]],j+1);}printf("Query %d: %d\n",i,ans);}printf("\n");}return 0; }
转载于:https://www.cnblogs.com/atmacmer/p/5293586.html
HDU 2461 Rectangles#容斥原理相关推荐
- HDU 4135 Co-prime 容斥原理
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目描述: 给你A, B, N, 让你求A到B之间与N互质的数的个数 解题思路: 容斥原理, ...
- HDU 4135 Co-prime(容斥原理)
Co-prime 第一发容斥,感觉挺有意思的 →_→ [题目链接]Co-prime [题目类型]容斥 &题意: 求(a,b)区间内,与n互质的数的个数. \(a,b\leq 10^{15}\) ...
- HDU - 4135 Co-prime(容斥原理)
题目链接:点击查看 题目大意:给出一个区间[l,r],再给出一个n,问区间中有多少个数与n互质 题目分析:容斥原理应用的经典题目,马克一篇非常不错的博客,留着以后慢慢消化: https://blog. ...
- HDU 5514 Frogs (容斥原理)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意 : 有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过a[i] ...
- HDU 4407 Sum(容斥原理+状态压缩)
题目链接 容斥原理不会,map不会,状态压缩不会.做毛线... 题目大意:给出1-n,n个数,有两个操作1是询问x-y区间上与p互质的数的和是多少,2是改变x位置上的数为c. 自己确实办不了,map这 ...
- HDU 4407 sum 容斥原理
算法: 利用数据1...N的性质,求与P的互质的个数,位运算,容斥定理.. #include<stdio.h> #include<stdlib.h> #include<s ...
- hdu 2461(线段树求面积并)
题意:给出N个矩形,M次询问 每次询问给出R个,问这R个矩形围成的面积 解题思路:对于每次询问,做一次线段树求面积的并操作. 每个节点保存的信息有l,r,cover,len分别表示该节点表示的区间[l ...
- Integer’s Power HDU - 3208(容斥原理)
找出(l,r)内的所有的指数最大的次方和 因为一个数可能可以看成a^b和c^d,所以我需要去重,从后往前枚举幂数,然后找可以整除的部分,把低次幂的数去掉. 然后开n方的部分,先用pow()函数找到最接 ...
- HDU 5514 Frogs (容斥原理+因子分解)
题目链接 题意:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条ai个石头,问最后所有青蛙跳过的石头的下标总和是多少? 题解:暴力肯定会超时,首先分解出m的因子,自己本身不用分,因为石头编号是0 ...
最新文章
- php7的foreach遍历数组,PHP中使用foreach遍历三维数组
- HyperLedger Fabric链码开发及测试
- 机器人瓦力漫威_86、机器人瓦力
- .net 浏览器请求过程(图)
- 组播理论知识的补充笔记
- Java高级补充(Socket服务端、客户端)、Handler类、安卓Socket传数据、WebView
- error c4996: 'fopen' This function or variable may be unsafe如何解决
- Android自动化测试工具——Monkey
- spark学习-75-源代码:Endpoint模型介绍(6)-Endpoint的消息的接收(2)
- python物理建模初学者指南 pdf 脚本之家_Blender权威指南 罗聪翼 著 中文 PDF 清晰扫描版 [114M]...
- 【项目】数据仓库概述
- win10进程太多怎么优化_Windows 10加速优化全攻略,何止是快?
- 中科大网上财务报销填写流程
- python应用程序无法正常启动0xc000007b_应用程序无法正常启动0xc000007b怎么解决
- 26两种主界面的设计
- 二十九岁,刚读完了财富启蒙读物《小狗钱钱》
- notepad背景护眼模式设置
- 深入理解 iOS 开发中的锁
- 【Hive】distinct on different columns not supported with skew in data
- ANGULAR之中的$STATE、 $WATCH、 $SCOPE、 $ROOTSCOPE 分别是什么?
热门文章
- Sery送的书与网站短信解决方案
- 水晶报表加载失败的解决方法
- 三分钟带你掌握 CSS3 的新属性
- 前端面试---Vue部分考点梳理
- 我的vscode配置 利用Settings Sync一键安装
- node --- 使用mongoose连接mongoDB,并初始化所有的Schema
- node --- 使用nrm改变npm的源
- 可添加至收藏夹并在浏览器地址栏运行的JS代码
- springCloud Finchley 实战入门(基于springBoot 2.0.3)【三 Eureka-高可用服务注册中心】...
- Swift iOS : WebView缓存图片的方法