Codeforces 1060D Social Circles 思想轉化
文章目錄
題意
有n個人,坐成若幹個圈.每個人要求左邊有l張空椅子,右邊有r張空椅子.求至少要多少張椅子.(每人自己需要坐一個椅子)
題解
非常好玩的一個題,當然是被大佬輕鬆秒掉了.
將
l,r兩陣列分別排序,輸出
n+∑i=1nmax(l[i],r[i]).
然後思考為什麼.
某一個
l可以和某一個
r匹配,匹配的結果是中間小的那個被約掉了,只剩下了大的那個.
那麼顯然最優的匹配就是最小的
l和最小的
r匹配,以此類推.
請注意是坐若干個圈,每個人當然有和自己匹配的可能.
在我所在的room有橙名大佬被神仙zhangzy hack了.
我一看他的程式碼.噗!沒開long long
!
這種錯誤真是我都笑出來了,連橙名大佬都會犯的錯誤大家一定要注意了.
typedef long long ll;
const int yuzu=1e5;
typedef int fuko[yuzu|10];
fuko l,r;
int main(){
int i,n=read();
for (i=1;i<=n;++i) l[i]=read(),r[i]=read();
sort(l+1,l+n+1),sort(r+1,r+n+1);
ll llx=n;
for (i=1;i<=n;++i) llx+=max(l[i],r[i]);
cout<<llx<<endl;
}
謝謝大家.
相關推薦
Codeforces 1060D Social Circles 思想轉化
文章目錄 題意 題解 題意 有 n
CodeForces - 1060D Social Circles 貪心
谷歌翻譯+修改: 你邀請了n位客人吃飯!您計劃安排一個或多個椅子。每把椅子要麼由一位客人佔用,要麼是空的。你可以製作任意數量的桌子。 你的客人碰巧有點害羞,所以第i位客人希望在他的椅子左邊至少有li把空閒的椅子,並且至少有ri空閒的椅子在右邊。選擇“左”和“右”方向,假設
1060D Social Circles(貪心)
題意:有n個客人,第i個客人希望左邊至少Li個空椅子,右邊至少Ri個空椅子,每個客人都屬於一個圈,問你最少需要準備的椅子數量 貪心做,每個人都可以去和另一個人牽手,組成一個新的人,那麼我們讓大的和大的牽手,小的和小的牽手,那麼我們椅子就很有效的利用了,所以我們將L和R陣列分別排序,每次取最大
Codeforces Round #513 D - Social Circles(貪心)
std typedef ORC using codeforce names nbsp 代碼 code 題目大意:有n(n≤105)個人排成一圈,第i個人要求自己左邊空出li個座位,右邊空出ri(li,ri≤109)個座位。問最少需要安排多少個座位。思路:一開始先假設每
Codeforces Round #513 D. Social Circles 貪心
CF: greedy math *1900; 題意: 給定n個人,每個人坐下以後,左邊要有l[i]個座位,右邊要有r[i]個座位;一個人一張桌子時可以把左右兩邊看作重合; 思路: 一開始想了個假演算法,
Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2), problem: (D) Social Circles
感覺比c題好想多了,因為環可以有隨便多個,自己和自己也可以成環,那就 記錄l,和 r 然後兩個陣列sort一下,按下標配對就好了,配對取大的那個,所有對求和,然後加上n個人就是答案,程式碼如下。 #include <bits/stdc++.h&
Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) D. Social Circles 【貪心】
D. Social Circles time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Y
Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)-D. Social Circles
思路:看完題解感覺好簡單啊,為什麼沒有想出來╮(╯﹏╰)╭ 首先將所有的人都圍成一個圈,那麼想要得到最小的凳子數,主要就是相鄰的二人的左右凳子數相互抵消,即取max(Li,Ri),那麼就是取得的max(Li,Ri)最小,這樣考慮顯然是將L[i],R[i]由小到大排序
CodeForces - 445B - DZY Loves Chemistry-轉化問題
參考 define http 我們 col 只需要 它的 需要 isp 傳送門:http://codeforces.com/problemset/problem/445/B 參考:https://blog.csdn.net/littlewhite520/article/de
cf Social Circles
pop 長度 別人 imp 意思 port social 直接 堆排序 http://codeforces.com/contest/1060/problem/D 貪心啊!!!! 既然兩個a的左和b的右在重疊,那就盡量讓重疊最多。 排序後用貪心不就ok。排序n*log(n
【POJ - 3304 】Segments(計算幾何,思想轉化,直線和線段相交)
題幹: Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting t
2018.10.04 codeforces1060D. Social Circles(貪心)
傳送門 一道神奇的貪心。 考慮每次加入一個人,他要麼新構成一個圈,要麼利用之前已有的空位。 而不論如何決策,增加的貢獻只跟當前左右l,rl,rl,r的最大值有關,因此我們只需保證每次取得的max(l,r
CF513D Social Circles
文章目錄題目題目大意思路程式碼 題目 傳送門 題目大意 你請了N(N≤105)N(N\leq 10^5)N(N≤105)個客人吃飯,它們的椅子需要圍成一個或多個圈,但是客人們都有些害羞,第iii個客人希
Codeforces 1060D Nature Reserve
Codefoces 1060D 思維題 大概題意:排環狀座位,可以有多個環,每個人對自己的座位都有如下要求:左邊需要有空位置a個,右邊需要有空位置b個,問最少需要座位多少個 首先我想到了貪心,兩
11134-Fabled Rooks【貪心 + 優先佇列 + 思想轉化】
這題主要學習了一下貪心的方法,和優先佇列priority_queue的使用 貪心策略就是 每次 左邊界 小的 並且 右邊界 小的出佇列,其次需要根據位置不斷更新左邊邊界值 #include<cstdio> #include<cstring> #inc
Codeforces 1132G(關系轉化樹+dfn+線段樹)
oid i++ push_back fine 必須 cto dfs序 back force 要點 顯然要滑動修改維護。 像通常的數列next關系一樣建邊(單調棧預處理),因為貪心所以是樹,然後發現增刪只會影響區間內的子(or父,看你連邊方向行事)節點,於是使用dfs序建線
Codeforces 768B - Code For 1(分治思想)
spa pac family query strong ace sizeof tro main 768B - Code For 1 思路:類似於線段樹的區間查詢。 代碼: #include<bits/stdc++.h> using namespace st
Codeforces 383C Propagating tree, 線段樹, 黑白染色思想
code namespace ios names seq bit amp mod void 按深度染色,奇深度的點存反權值。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 vector &
Codeforces 938D Buy a Ticket (轉化建圖 + 最短路)
typedef ++ using fine return push 題意 aps stat 題目鏈接 Buy a Ticket 題意 給定一個無向圖。對於每個$i$ $\in$ $[1, n]$, 求$min\left\{2d(i,j) + a_{j}\right\
CodeForces-768B-Code For 1+DFS類似線段樹思想
can b- include def code tar esp 操作 sca Code For 1 題意:對於一個n,可以將它分解為n/2,n%2,n/2三個數字,重復上述操作知道雖有值為1或0為止; 求L---R區間數列的和; 思路:首先畫著畫著可以發現這是一個類似線