Codeforces 892E Envy

問題描述

小Q正在玩一個疊塔的游戲,游戲的目標是疊出盡可能高的塔。在游戲中,一共有n張矩形卡片,其中第i張卡片的

長度為a_i,寬度為b_i。小Q需要把所有卡片按一定順序疊成一座塔,要求對于任意一個矩形,它的長度要嚴格大

于它上邊的任意一個矩形的長度。塔的高度為所有矩形的寬度之和。在游戲中,小Q可以將卡片翻轉90度來使用,

而且必須用上全部n張卡片。請寫一個程序,幫助計算小Q能疊出最高的塔的高度。

輸入格式

第一行包含一個正整數n(1<=n<=250000),即卡片的個數。

接下來n行,每行兩個正整數a_i,b_i(1<=a_i,b_i<=10^9),分別表示每張卡片的長度和寬度。

輸出格式

輸出一行一個整數,即最高的塔的高度,輸入數據保證一定存在解。

樣例輸入

3
5 16
10 5
5 10

樣例輸出

20

解析

不妨將一個矩形放在底下的邊視為長,另一邊視為寬,若將兩條邊作為點連起來,為了滿足單調遞減的條件,每個長只能連向一個寬。那么這就變成了一個邊定向問題。一條邊的入點作為長,出點作為寬,則每個點的答案貢獻為
\((d[i]-1)*val[i]\),其中\(d[i]\)表示與該點相連的邊數,減一即為減去一個出邊得到一共做了多少次寬。

注意到每個點僅有一個出邊的性質,那么滿足條件的連通塊最后形成的結構為內向樹或者內向基環樹。如果是內向基環樹則方案唯一,但如果是樹的話,會有根節點答案為\(d[root]*val[root]\),即\(val[root]\)會多算一遍。所以我們應選最大的點為根節點。

關于判斷是基環樹還是樹,因為樹有n個點n-1條邊,所以有
\[ \sum_{i=1}^{n}d[i]=2(n-1) \Rightarrow \sum_{i=1}^{n}(d[i]-2)<0 \]
滿足上式的即為樹,否則為基環樹。

代碼

#include <iostream>
#include <cstdio>
#include <map>
#define N 500002
#define int long long
using namespace std;
int head[N],ver[N*2],nxt[N*2],d[N],l;
int n,i,num,maxx,sum,ans,key[N];
bool vis[N];
map<int,int> val;
int read()
{char c=getchar();int w=0;while(c<'0'||c>'9') c=getchar();while(c<='9'&&c>='0'){w=w*10+c-'0';c=getchar();}return w;
}
void insert(int x,int y)
{l++;ver[l]=y;nxt[l]=head[x];head[x]=l;d[y]++;
}
void dfs(int x)
{vis[x]=1;maxx=max(maxx,key[x]);sum+=d[x]-2;ans+=(d[x]-1)*key[x];for(int i=head[x];i;i=nxt[i]){int y=ver[i];if(!vis[y]) dfs(y);}
}
signed main()
{n=read();for(i=1;i<=n;i++){int a,b;a=read();b=read();if(!val[a]){val[a]=++num;key[num]=a;}if(!val[b]){val[b]=++num;key[num]=b;}a=val[a];b=val[b];insert(a,b);insert(b,a);}for(i=1;i<=num;i++){if(!vis[i]){maxx=sum=0;dfs(i);if(sum<0) ans+=maxx;}}printf("%lld\n",ans);return 0;
}

轉載于:https://www.cnblogs.com/LSlzf/p/11182681.html

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

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

相關文章

Zookeeper環境安裝

源碼包下載&#xff1a; http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10 集群環境&#xff1a; master 192.168.1.99 slave1 192.168.1.100 slave2 192.168.1.101 下載安裝包&#xff1a; # Mater wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.1…

鴻蒙系統用沒有安卓的代碼,套殼?不存在!純鴻蒙系統不含任何安卓代碼,其他手機廠商可使用...

眾所周知&#xff0c;華為的鴻蒙系統已經應用于許多華為機型上&#xff0c;例如Mate40、MataX2等&#xff0c;同時不少家電廠商也和華為合作推出了基于鴻蒙的終端設備&#xff0c;比如美的、老板等。那么&#xff0c;和華為處于競爭關系的手機廠商可以使用鴻蒙系統嗎&#xff1…

出來乍到

第一篇&#xff0c;還沒想到寫什么東西&#xff0c;比空的好&#xff0c;先這么掛一下把。轉載于:https://www.cnblogs.com/Carlwave/archive/2006/01/24/322413.html

Java消息隊列總結只需一篇解決ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一、消息隊列概述 消息隊列中間件是分布式系統中重要的組件&#xff0c;主要解決應用解耦&#xff0c;異步消息&#xff0c;流量削鋒等問題&#xff0c;實現高性能&#xff0c;高可用&#xff0c;可伸縮和最終一致性架構。目前使用較多的消息隊列有ActiveMQ&#xff0c;RabbitM…

一種快速統計SQL Server每個表行數的方法

我們都知道用聚合函數count()可以統計表的行數。如果需要統計數據庫每個表各自的行數(DBA可能有這種需求)&#xff0c;用count()函數就必須為每個表生成一個動態SQL語句并執行&#xff0c;才能得到結果。以前在互聯網上看到有一種很好的解決方法&#xff0c;忘記出處了&#xf…

android 小黃車首頁,android采用MVP漫畫APP、適配劉海屏、小黃車主界面、錄音波浪動畫、綜合APP等源碼...

Android精選源碼Android優質博客為什么組件化 隨著移動互聯網的發展&#xff0c;或許中小型項目還可以用單工程MVC/MVP/MVVM的架構來完成&#xff0c;但當項目到了一定程度之后&#xff0c;編譯時間 原來越長&#xff0c;測試或者開發任何一個模塊功能都需要整個項目重啟運行。…

[HEOI2012]采花

題目描述 蕭薰兒是古國的公主&#xff0c;平時的一大愛好是采花。 今天天氣晴朗&#xff0c;陽光明媚&#xff0c;公主清晨便去了皇宮中新建的花園采花。 花園足夠大&#xff0c;容納了n朵花&#xff0c;花有c種顏色&#xff08;用整數1-c表示&#xff09;&#xff0c;且花是排…

修改SQL server數據庫中的邏輯文件名

使用 FILE_NAME 函數可以返回給定文件標識 (ID) 號的邏輯文件名如下 下例返回 file_ID 為 1 的文件名&#xff08;master 數據庫文件&#xff09;。 1USEmaster2SELECTFILE_NAME(1)當我們進行從一個備份中還原數據庫時&#xff0c;數據庫的邏輯文件名是不會改變的。 可用 ALTER…

java根據模板生成PDF

首先你的制作一個pdf模板&#xff1a; 1.先用word做出模板界面 畫單元格的時候需要考慮值的長度&#xff0c;像這里的狀態可能會很長 2.文件另存為pdf格式文件 使用福昕PDF 打開&#xff0c;添加文本&#xff0c;以及需要添加值的地方&#xff0c;設置文本域&#xff0c;這個就…

android bilibili搜索框,仿bilibili搜索框效果(三句代碼實現)

SearchDialog仿bilibili搜索框效果(只需要三句話即可實現)先看預覽圖(轉換后有一點點失真):前言1,支持搜索歷史(已經做了數據庫存儲了)2,基本與bilibili的搜索效果差不多了3,需要修改更多內容可以下載library自己修改4,本人非大牛,有不妥之處請Issues指出,謝謝5,參考了該po的文…

元璟資本陳洪亮解析人貨場融合 消費者變成“合作者”

一年一度的云棲大會是新科技大放異彩的舞臺&#xff0c;而創業者們同樣聚集于此&#xff0c;探討前沿的商業模式。 在今日舉行的“云棲大會 - 阿里云創新中心年度盛典”上&#xff0c;元璟資本合伙人陳洪亮發表演講&#xff0c;他從新消費和新零售的諸多創新現象出發&#xff0…

通用數據庫顯示程序

數據庫顯示程序,能調任意庫,任意字段,多關鍵字搜索,自動分頁. 阿余經常寫一些數據庫相關的程序,當然離不開顯示庫中的數據了,說實話,做這樣的程序真是無聊啊,所以,阿余就想寫個函數,一個通用的數據庫顯示函數.要求如下: 1. 能顯示指定的字段,當然,字段名和顯示的文字可以不一樣…

2019.8.13 sdfzoier

lxy: lixf acwing上的118,126 zhangtingyu zhaosirui wujialin 轉載于:https://www.cnblogs.com/caterpillor/p/11186047.html

鴻蒙 電視盒子,目前最強的電視盒子:性價比最高的5款電視盒子

電視盒子作為目前人們滿足精神生活的一個電子產品&#xff0c;產品的質量自然是要有很高的保證&#xff0c;并且要有較好的使用體驗&#xff0c;在產品價格上也要讓消費者感到實惠&#xff0c;以上這些要求也是我們所說的性價比&#xff0c;性價比最高的盒子&#xff0c;也足以…

CDH-5.7.0:基于Parcels方式離線安裝配置

http://shiyanjun.cn/archives/1728.html https://www.waitig.com/cdh%E5%AE%89%E8%A3%85.html

From 7.8 To 7.14

From 7.8 To 7.14 大綱 學科 英語的話每天早上背單詞, 爭取每天做一篇完型, 一篇閱讀, 一篇短文填空, 一篇改錯, 一篇七選五??? 似乎太多了, 先試一下吧 語文的話, 嘗試翻譯一下文言文??? 理科先不管他 競賽 考試, 題解, 做題, 恩, 應該差不多吧 7.12 考試, 改題... 今天…

html郵箱地址的正則表達式,javascript寫一個校驗郵箱的正則表達式

test判斷字符串是否符合正則的要求注意注意&#xff1a;字符串有一部分符合要求&#xff0c;test就會判斷為真。這個時候我們可以加一個行首(^)行尾($)來控制分析我們根據常用郵箱寫一個中文的校驗規則如下&#xff1a;我們常用的郵箱格式&#xff1a;yancamy126.comyan233__qq…

系統需求分析文檔需要考慮的問題

最近作了幾次需求分析,有了一些經驗,特共享出來.歡迎指正.我認為在系統需求分析中,有三個問題需要注意,即系統涵蓋范圍用戶對上線時間的要求系統上線對目前系統整體的影響系統覆蓋的范圍很多用戶都想的是,這次一定要把所有遇到的問題解決完. 也就說,客戶潛在的心理是對系統較高…

洛谷 P1414 又是畢業季II (多個數的最大公因數)

這道題其實不難&#xff0c;但是我想復雜了 我想的是把每個數質因數分解&#xff0c;然后每次就枚舉每個質因數 來求最小公倍數。 然后想了想這樣復雜度將會非常的大&#xff0c;肯定超時 然后看了題解發現不需要質因數分解&#xff0c;直接存因數的個數就好了 c[i]表示i這個因…

前端之CSS

什么是CSS&#xff1f; 在標簽上設置標簽的style屬性。 編寫CSS的方法 一、直接在標簽中寫style屬性。 二、在head標簽中寫style標簽&#xff0c;這里就需要選擇器選擇所需的標簽 1、id選擇器&#xff0c;以#開頭&#xff0c;例子如下&#xff1a; <!DOCTYPE html> <h…