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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272177.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LD3320語音識別模塊二次開發及與樹莓派間的通訊

實物圖如下&#xff1a; 一般這種模塊的資料廠家都會給&#xff0c;需要的話可以私信我發郵箱&#xff0c;下面介紹該模塊的各種參數。型號&#xff1a;YS-LDV7名稱&#xff1a;一體化語音識別模塊規格&#xff1a;43*29.7MM供電電壓&#xff1a;5V &#xff08;內部工作電壓…

HTTP的長鏈接和短鏈接說明

HTTP的長鏈接和短鏈接實際上是TCP的長連接和短鏈接。首先我們先介紹一下TCP/IP協議組四層模型。其中包括以下&#xff1a; 應用層&#xff1a;HTTP、FTP、DNS、TELNET等協議傳輸層&#xff1a;TCP、UDP網絡層&#xff1a;IP、ARP、RARP、ICMP協議等網絡接口層&#xff1a;是TC…

多生產者_你是生產者還是消費者?這決定了你的層次。

不知道你有沒有注意到&#xff0c;每天乘坐地鐵上下班的時候&#xff0c;大部分人都在刷劇、看視頻、打游戲等等&#xff0c;總之都屬于玩樂。用生產和消費的關系來看的話&#xff0c;其實這一大部分人都屬于消費者&#xff0c;“時間和注意力”是他們用于交換的籌碼&#xff1…

eclipse Android 開發基礎 Activity 窗體 界面

eclipse Android 開發基礎 新建工程 新建布局layout,new Android Activity就相當于窗體Form。 新建Activity自動生成src下同名的java代碼。 public class Tform2activity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(saved…

8 種常被忽視的 SQL 錯誤用法

來源&#xff1a;http://t.cn/R6UMaA11、LIMIT 語句2、隱式轉換3、關聯更新、刪除4、混合排序5、EXISTS語句6、條件下推7、提前縮小范圍8、中間結果集下推總結sql語句的執行順序&#xff1a;FROM <left_table>ON <join_condition><join_type> JOIN <right…

變頻器按啟動沒反應_起重機軟啟動柜晶閘管損壞維修幾大故障

缺相保護功能&#xff1a;工作時&#xff0c;軟起動器隨時檢測三相線電流的變化&#xff0c;一旦發生斷流&#xff0c;即可作出缺相保護反應。過熱保護功能&#xff1a;通過軟起動器內部熱繼電器檢測晶閘管散熱器的溫度&#xff0c;一旦散熱器溫度超過允許值后自動關斷晶閘管&a…

Redis 的各項功能解決了哪些問題?

作者丨blackheart先看一下Redis是一個什么東西官方簡介解釋到&#xff1a;Redis是一個基于BSD開源的項目&#xff0c;是一個把結構化的數據放在內存中的一個存儲系統&#xff0c;你可以把它作為數據庫&#xff0c;緩存和消息中間件來使用。同時支持strings&#xff0c;lists&am…

python datetime用法_python datetime用法學習筆記

一、主要思路&#xff1a;1.把表示時間的str轉換為datetime對象2.操作datetime對象輸出期望的時間格式二、把表示時間的str轉換為datetime對象語法&#xff1a;datetime.strptime(date_str, format)示例&#xff1a;date_str "2017-06-23 21:08:12"date_obj dateti…

RocketMQ集成SpringBoot

RocketMQ集成SpringBoot RocketMQ總體架構 RocketMQ基本特性

協議(Protocol)與委托代理(Delegate)

協議(Protocol)的作用&#xff1a; 1. 規范接口&#xff0c;用來定義一套公用的接口&#xff1b; 2. 約束或篩選對象。 代理(Delegate)&#xff1a; 它本身是一種設計模式&#xff0c;委托一個對象<遵守協議>去做某件事情&#xff0c;目的是為了降低對象間的耦合度&#…

ASP.NET Core 2.2+Quartz.Net 實現Web定時任務

作者&#xff1a;Julian_醬鏈接&#xff1a;http://www.cnblogs.com/mi12205599/p/10361763.html作為一枚后端程序狗&#xff0c;項目實踐常遇到定時任務的工作&#xff0c;最容易想到的的思路就是利用Windows計劃任務/wndows service程序/Crontab程序等主機方法在主機上部署定…

lj245a引腳功能圖_ULN2003A引腳圖及功能-uln2003a原理

ULN是集成達林頓管IC&#xff0c;內部還集成了一個消線圈反電動勢的二極管&#xff0c;可用來驅動繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅動電壓50V,電流500mA,輸入電壓5V,適用于TTL COMS,由達林頓管組成驅動電路。ULN是集成達林頓管IC,內部還集成了一個消線圈反電動勢…

RocketMQ核心概念

生產者Producer和消費者Consumer NameServer作用 Broker和Topic

交叉編譯、軟硬鏈接

什么是交叉編譯&#xff1f;交叉編譯是一個行為&#xff0c;是在一個平臺上生成另一個平臺上的可執行代碼。 本地編譯&#xff1a;本地編譯可以理解為&#xff0c;在當前編譯平臺下&#xff0c;編譯出來的程序只能放到當前平臺下運行。平時我們常見的軟件開發&#xff0c;都是…

掃地機器人狗毛_掃地機器人:我是清理狗毛的!不是清理狗屎的!

原標題&#xff1a;掃地機器人&#xff1a;我是清理狗毛的&#xff01;不是清理狗屎的&#xff01;掃地機器人可以清潔地面和角落里的垃圾&#xff0c;對于滿是毛毛的鏟屎官家庭來說&#xff0c;簡直就是福音吶&#xff01;不過最近&#xff0c;槽點卻有點多&#xff1a;家里買…

Linus下安裝maven

下載maven安裝包 wget http://mirror.bit.edu.cn/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz 解壓 tar -zxvf apache-maven-3.2.2-bin.tar.gz 配置maven環境變量 查看maven解壓后安裝包目錄 vi /etc/profile 進入最底部&#xff0c;按insert,添加環境變量&#x…

linux內核開發基礎(linux內核源碼、樹莓派源碼編譯、SD卡掛載)

首先下載樹莓派linux內核源碼&#xff1a; 下載網址&#xff1a;https://github.com/raspberrypi/linux在樹莓派使用指令&#xff1a;uname -r查看當前樹莓派的版本號&#xff0c;然后選擇對應的linux內核版本號進行下載。 將linux內核源碼從共享文件夾拷貝到SYSTEM文件夾&am…

Linux實時查看進程命令top筆記

top命令是Linux下常用的性能分析工具&#xff0c;能夠實時顯示Linux系統中各個進程的資源占用狀況&#xff0c;類似于Windows系統的任務管理器功能。 top命令的語法格式&#xff1a; top [-] [d] [p] [q] [c] [C] [S] [s] [n] 常用參數說明 d 指定每兩次屏幕信息刷新之間的時間…

C#基礎之Equals和Dispose

1.equal()和運算符的區別 由于C#中有值類型和引用類型&#xff0c;那么相等也分為值相等和引用相等。先來看一個值類型簡單的例子&#xff0c;順便也寫了string類型的比較。 static void Main(string[] args){int n1 1;int n2 1;Console.WriteLine(n1n2);Console.WriteLine(n…