CodeForces 896C 珂朵莉樹

2021-10-23 23:21:07 字數 1636 閱讀 9848

傳送門

用set搞的比較神奇的樹吧,玄學時間複雜度,**簡潔好寫,無聊學了用來水題再好不過了 ~ ~ ~

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

#define mid (tr[u].l+tr[u].r>>1)

#define len(u) (tr[u].r-tr[u].l+1)

#define pb push_back

#define mk make_pair

#define it set::iterator

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n=

1000010

,mod=

1e9+

7,inf=

0x3f3f3f3f

;const

double eps=

1e-6

;int n,m;

ll seed,vmax;

struct node

bool

operator

<

(const node& o)

const};

sets;

it split

(int pos)

void

assign_val

(int l,

int r,ll val)

void

add(

int l,

int r,ll val)

//區間加

ll ran

(int l,

int r,

int k)

//區間第k小);

sort

(v.begin()

,v.end()

);for(vectorint>

>

::iterator it=v.

begin()

;it!=v.

end(

);it++)}

ll qmi

(ll a,ll b,ll mod)

return ans;

}ll sum

(int l,

int r,

int ex,

int mod)

//區間冪次和

ll rad()

intmain()

s.insert

(node

(n+1

,n+1,0

));for

(int i=

1;i<=m;i++

)return0;

}/**/

Codeforces 587C 樹上倍增

題意 求樹上兩點路徑中的前 a 10 小的點權值。思路 類似lca倍增演算法來儲存 i 2 j 路上的 前 10 小個 的點權值。然後要寫乙個權值合併 具體求 u v 的話,就是先分別計算 和 減1是lca會重疊 然後再合併,輸出答案。include include include include ...

Codeforces 976C 題解報告

對資料進行排序 1 按左邊的數從小到大排 2 若左邊的數相等,則按右邊的數從大到小排。排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。比如2 13 2 12 1 11排序之後,變為 1 11 2 13 2 12因為12 13,則有 2,12 被包含在它的上乙個數 2,...

CodeForces 948C 解題報告

題目鏈結 這道題看出來了是一道stl題,本來一開始用佇列去做,結果tle,在這裡先給出tle include using namespace std typedef long long ll const int maxn 1e5 10 int n,v maxn t maxn int main els...