傳送門
用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...