對資料進行排序:
(1)按左邊的數從小到大排;
(2)若左邊的數相等,則按右邊的數從大到小排。
排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。
比如
2 13
2 12
1 11
排序之後,變為
1 11
2 13
2 12
因為12 < 13,則有<2, 12>被包含在它的上乙個數<2, 13>之內。
#include
using
namespace
std;
#define x first
#define y second
typedef pair pt;
const
int n = 300 * 1000 + 13;
int n;
pairint> a[n];
int main()
// 這裡用到了lambda函式,[&]表示引用傳遞
// 先按a.x.x從小到大排列;若a.x.x相同,則按a.x.y從大到小排列
sort(a, a + n, [&](pairint> a, pairint> b)
return a.x.y > b.x.y;
});set
cur;
for (int i = 0; i < int(n); i++)
// 經過sort排序後,當前數的x,一定大於或等於上個數的x
// 若當前數的y,小於或等於上個數的y,則符合題意輸出結果
if (!cur.empty() && (--cur.end())->x >= a[i].x.y)
cur.insert();
}puts("-1 -1");
return
0;}
Codeforces 976E 題解報告
1 當把所有的倍數2 a都加到同一health上,health增加的最多 2 先計算每乙個creature的hp dmg,按該值對所有的creature排序 再求和,i include using namespace std const int n 200 1000 9 int hp n dmg n...
codeforces 321C 點分治好題
題意 給定一棵樹,讓你對其進行染色,使得任意顏色相同的兩個點之間的路徑上存在等級更高的顏色。思路 我們考慮點分樹的結構,點分樹上的每個節點都對應於乙個邊的集合 經過這個節點的所有邊 點分樹上的父子關係,一棵點分樹上任意乙個節點,以他為根的子樹上的所有點是這個節點路徑集合的端點集合。有了這些結論,這道...
Codeforces 670C (離散化入門題)
題目大意 有 n 個人,每人會且僅會一種語言.n 2e5 語言有各自的編號 1e9 這些人去看電影,一共有 m 種電影.m 2e5 每個電影的聲音與字幕語言都不一樣.若有人的語言與聲音語言一樣,則稱這個人很高興 若有人的語言與字幕語言一樣,則稱這個人比較高興.現讓你選擇一場電影,使得此電影中,很高興...