Codeforces 976C 題解報告

2021-08-19 15:35:25 字數 969 閱讀 4762

對資料進行排序:

(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 每個電影的聲音與字幕語言都不一樣.若有人的語言與聲音語言一樣,則稱這個人很高興 若有人的語言與字幕語言一樣,則稱這個人比較高興.現讓你選擇一場電影,使得此電影中,很高興...