HDU-2461 Rectangles(容斥原理)

新手必看:SMIC 0.18um PDK安装保姆级教程(附Cadence IC617环境配置) 本文提供SMIC 0.18um PDK在Cadence IC617环境下的详细安装教程,涵盖环境准备、文件解压、安装脚本运行、环境变量配置及Cadence集成验证等关键步骤,特别针对初学者常见问题提供解决方案,助力快速掌握芯片设计工具配置。 阅读详情

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2461

题意:给出n个矩形的左下角和右上角坐标,要求进行m次操作,每次对t个矩形进行涂色(给出这t个矩形的序号),要求计算出每次涂色时需要涂色的面积。(涂色可以覆盖,即每次操作不受前面任何操作的影响)。

分析:矩形之间可以覆盖,每次操作要计算覆盖后图形的面积,这里就要用到容斥原理。每次操作时有如下关系式

需要涂色的面积=t个矩形的面积和-任意两个矩形相交的面积+任意三个矩形相交的面积-...+(-1)^(t-1)*t个矩形相交的面积

计算相交矩形的面积通过结构体成员函数来实现,dfs计算结果,搜索时当相交面积为0时不可能再和后面要搜索的矩形构成相交部分,此时停止搜索。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
struct Rect
{
    int x1,y1,x2,y2;
    int Area()
    {
        if(x1>=x2||y1>=y2) return 0;
        return (x2-x1)*(y2-y1);
    }
    Rect Cross(const Rect &r) //返回两个矩形相交部分的矩形
    {
        Rect t;
        t.x1=max(x1,r.x1);
        t.y1=max(y1,r.y1);
        t.x2=min(x2,r.x2);
        t.y2=min(y2,r.y2);
        return t;
    }
};
int n,m;
Rect r[25];
int ans;
int mm;
int t[25];

void dfs(int i,Rect temp,int num)
{
    temp=temp.Cross(r[t[i]]);
    int area=temp.Area();
    if(area==0) return; //这个剪枝非常重要,否则TLE
    if(num&1) ans+=area;
    else ans-=area;
    for(int j=i+1;j<mm;j++)
        dfs(j,temp,num+1);
}
int main()
{
    int cnt=1;
    while(~scanf("%d%d",&n,&m))
    {
        if(n==0&&m==0) break;
        for(int i=1;i<=n;i++)
            scanf("%d%d%d%d",&r[i].x1,&r[i].y1,&r[i].x2,&r[i].y2);
        printf("Case %d:\n",cnt++);
        int cntt=1;
        while(m--)
        {
            //int mm;
            scanf("%d",&mm);
            //int t[20];
           for(int i=0;i<mm;i++)
            scanf("%d",t+i);
           ans=0;
           for(int i=0;i<mm;i++)
             dfs(i,r[t[i]],1);
            printf("Query %d: %d\n",cntt++,ans);
        }
        puts("");
    }
    return 0;
}


飞腾D2000 BIOS编译避坑指南:PCIE拆分、S3电源与过温保护配置详解 本文详细解析飞腾D2000 BIOS编译中的关键配置技巧,包括PCIE拆分模式优化、S3电源管理适配及过温保护设置。通过实战案例和参数调优建议,帮助开发者规避常见陷阱,充分发挥国产高性能计算平台的硬件潜力。特别针对BIOS编译过程中的隐蔽问题提供解决方案。 阅读详情

相关推荐

手把手教你用STM32CubeIDE移植Vector CCP驱动,实现与INCA的标定通信(附避坑指南)

本文详细介绍了如何在STM32CubeIDE环境下移植Vector CCP驱动,实现与INCA的标定通信。从开发环境准备、CAN外设配置到CCP协议栈移植和A2L文件生成,提供了完整的操作流程和常见问题解决方案,帮助工程师快速掌握基于CAN总线的标定技术。

weixin_28685287的博客 139

HDU 2056 Rectangles(矩形相交判断)

两个问题 1.精度问题 用double不要用float。在hdu里面有一些题用float就wa,换成double就ac,注意精度 2.矩形相交判断 说个题外话,其实很多2D游戏的道具判断就是这样,例如超级玛丽遇到蘑菇就会变大,其实就是矩形相交触发的事件 假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形     rect1{

口中冰的博客 377

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1107

HDU-2461 Rectangles 容斥

题意:给出n个矩形的左下角和右上角坐标,要求进行m次操作,每次对t个矩形进行涂色(给出这t个矩形的序号),要求计算出每次涂色时需要涂色的面积。(涂色可以覆盖,即每次操作不受前面任何操作的影响)。 分析:因为n很小,所以明显用容斥就可以解决。奇加偶减,算相交面积。 一直习惯用位写容斥,但这个题n是20,循环过多,TLE了,然后看vj上有人先用位打了个表,也挺快的,不过没看懂,还是换过来用dfs写...

兜率工的博客 323

ReportStudio入门教程(四十一) - 固定报表列宽

我们继续上一篇博客,让他看起来

什么是江湖? 3518

从矩阵理论角度理解偏最小二乘回归,以及在脑科学中(脑影像与行为、基因表达的关系)的应用举例

偏最小二乘法 (PLS) 是一种多元数据驱动的统计技术,旨在提取表示最大大脑行为关联的潜在变量(或潜在成分 latent components [LC])。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 975

hdu-2461-Rectangles(容斥)

hdu-2461-Rectangles(容斥)

Seeker 585

算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

【代码】算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

尘世冰封的专栏 1018

hdu 2461

做了差不多一天,终于过 题意: 就是给你N(N)个矩阵,共有M(M个询问,每个询问就是涂r个矩阵,问总共有多少个单位矩阵被涂了。 开始时,其实就是一个容斥定理,总个数=所有的矩阵的面积 —重合两次的面积 + 重合三次的面积。。。。。 我用想到的直接用dp[N][N]来求dp[i][j]表示i表示宽度,第j矩阵到第j+i矩阵的重合,打了一下代码,发现完全错误了,其实要求任意个矩阵的重合,不

tianjiewang的专栏 646

基于Python的FTA协定内容爬虫实战:从数据抓取到智能分析

本文将详细介绍如何使用Python构建一个高效的FTA(自由贸易协定)内容爬虫,涵盖最新技术如Playwright、异步IO、智能解析等。通过本教程,您将学会如何从各类政府网站和国际组织平台抓取结构化FTA数据,并对其进行清洗、存储和分析。文章包含完整的代码实现和最佳实践指南,适合中高级Python开发者学习网络爬虫开发。

2201_76125261的博客 993

uniapp - 解决苹果ios真机运行报错:错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配(HbuilderX运行IOS手机出现问题,uniapp运行到IOS真机提示请查看是否设备未)

uni-app,ios苹果,App平台端,uniapp运行到IOS真机提示错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UUID在哪里,uniApp运行到ios真机报错解决,安装自定义基座App失败,没找到有计划资源,证书、标识符和描述文件,证书标识符和描述文件下面没有选项怎么回事,HBuilder真机调试报错请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UniApp运行到IOS真机提示,授权的设备才可以直接安装基座,添加调试的IOS设备,在Devices中,添加手机设备UUID

🏆 前端领域优质创作者 1万+

[HDU2461] Rectangles [2008 Asia Hefei Regional Contest Online F]

题意给定不多于20个矩形,每次询问这些矩形的子集的矩形面积并。题解容斥原理,直接2^20枚举显然会有很多无用的状态,那么用dfs来枚举状态,当并的面积为0时,之后的状态就没有用了,这样就可以提高效率。代码/****************************************\ * Author : ztx * Title : F-Rectangles * ALG : 容斥原理 *

ztx 349

【深度学习新浪潮】如何上手DINO v3:Meta新一代视觉大模型实战指南

自定义数据集类(适配本地/公开数据集)# 去除batch维度# 构建数据加载器# 定义分类模型(冻结预训练层,仅训练分类头)self.classifier = nn.Linear(dino_model.config.hidden_size, num_classes) # 分类头global_feat = outputs.global_attention_pool # 取全局特征# 初始化模型# 冻结预训练层(仅训练分类头)# 定义损失函数和优化器。

专注:太空算力、AI infra、异构调度、大模型成本工程 492

[容斥原理] hdu 2461 Rectangles

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2461 Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1268    Accepted Subm

cc_again的专栏 1132

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HDU 2461 Rectangles 容斥原理

题意:坐标系上有N个矩形,给出了他们的左下顶点和右上顶点。每次操作是对其中的R个矩形进行染色,然后要你输出这些被染色的矩形的面积之和(重叠部分不能重复计算)。 题解:标准的容斥原理。 #include #include #include #include using namespace std; struct Rectangle { int x1, y1, x2, y2;}; Rectang

1249

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 2461 Rectangles

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2461 题意:有n个矩形,每次查询m个矩形的面积交。 思路:用dfs容斥定理求面积交,可以写一个剪枝如果当前面积已经为0,就退出。 #include #include #include #include #include #include #includ

DS-K的博客 339

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

hdu 2461 Rectangles

求矩形的并 矩形个数 1...20m次询问 回答要求的r个矩形的并容斥原理dfs优化: 遇到面积交为0时 这个dfs分支可以不下去了#include <iostream> #include <string> #include<sstream> #include <cmath> #include <map> #include ...

weixin_30449453的博客 113

【HDU】2461 Rectangles

题意:不超过20个矩形,100000个询问,求矩形面积并。 线段树复杂度比较靠谱吧。 偷懒用容斥了。由于询问很多,容斥时候会重复用到某几个矩形的面积交,那么可以先预处理出来。 询问的时候枚举子集肯定会TLE的,如果当前面积交为0,就不要再DFS下去了。这样就水过去了。 1 #include<cstdio> 2 #include<algorithm&gt...

weixin_30375247的博客 86

hdu2461 Rectangles-----容斥

Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 989    Accepted Submission(s): 558 Problem Description You are developing a

Shirley 1107

HDU-2461 Rectangles 容斥定理,状态压缩

这题简单说就是求矩形的面积并,线段树?只有20个矩形,我们可以用容斥来做。但是这个有个比较麻烦的地方就是要求出任意组合情况下的面积并,试过几次每次进行求解的写法都一一超时了。这里选择在dfs的时候直接枚举题目将询问的状态,只要当前状态是其子集的话,就直接加到上面。最后M次询问就能够在O(1)的时间内完成了。296MS水过了。   代码如下:   #include &lt;cstring...

weixin_33804582的博客 131

鸽巢原理和容斥原理小结

一、鸽巢原理 内容回顾: 1、若有n个笼子和n+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少2只鸽子。 2、若有n个笼子和kn+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少k+1只鸽子。 鸽巢原理主要在于能否抽象出它的模型,同时在应用其中,例如: 1.如果将1,2……10随机地摆放一圈,则必有相邻的三个数之和至少是17。 2.证明有理数a/b展开的十

Bright-XL 1714

hdu1796(容斥原理)

题目链接:hdu1796 容斥原理介绍 题目大意:给出m个数,在1~n(不包括n)之间找出所有能对m个数整除的 思路:枚举出所有可能组合,求出每一种组合的最小公倍数,运用容斥原理累加所有情况 #include #include #include #include #include using namespace std; #define LL __int64 int a[15

no pains,no gains 1286

HDU 4135 容斥原理

HDU 4135 容斥原理 链接 题意:给你一个区间[a,b][a,b][a,b] ,求这个区间内与n互质的数的个数。 题解:可以先求出[1,b][1,b][1,b]内与n互质的数的个数,然后再求出[1,a−1][1,a-1][1,a−1]内与n互质的数的个数,然后用前者减去后者即是答案。前者可以采用容斥原理求。对容斥原理不了解的可以看链接。首先求出n的所有质因子,然后dfs求容斥系数。 代码:...

weixin_43855330的博客 307

hdu-2056-Rectangles

RectanglesTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25081 Accepted Submission(s): 8163Problem DescriptionGiven two rectangles and the c

AC即性感 511

HDU6397 (组合问题+容斥原理)

题意 给三个数n,m,k, 在0~n-1中选出m个数排成一排使得他们的和等于k,这m个数可以相同,只要排列不同即可。求一共有多少种排列方式是满足题意的。 分析 先说下整体思路:对于没有0~n-1这个限制条件的话我们可以很快的用隔板法求出总的个数是C(m-1,k+m-1),然后可能x个数超过了n-1,那么我们减去只有1个数超过的情况,再加上超过了2个数的情况….也就是容斥原理。最后求得即可...

cugsl的博客 1203

hdu 2461(线段树求面积并)

题意:给出N个矩形,M次询问 每次询问给出R个,问这R个矩形围成的面积 解题思路:对于每次询问,做一次线段树求面积的并操作。 每个节点保存的信息有l,r,cover,len分别表示该节点表示的区间[l,r],该区间被线段完全覆盖的次数以及被线段覆盖的长度。 #include #include #include #include #incl

hexianhao的博客 457
上一篇: BZOJ-4591 超能粒子炮·改(lucas定理+预处理)
下一篇: POJ-2566 Bound Found(尺取法变形)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值