洛谷金秋夏令營模擬賽 第2場 T11738 偽神

2022-04-30 06:27:10 字數 1535 閱讀 2467

調了乙個下午只有八十分qaq md棄了不管了 對拍也沒拍出來 鬼知道是什麼資料把我卡了qaq

沒事我只是個sb而已 這題其實還是蠻正常的

做法其實很簡單 根據鏈剖的構造方法 你每次修改都是一段又一段的線段

那麼你只要求一下線段並起來後哪些地方被覆蓋了》=t次 不過要基數排序一波不然會t

#include#include

#include

#define ll long long

using

std::swap;

using

std::max;

const

int n=450007,m=30000000,b=1024

;int

read()

while(c>='

0'&&c<='9')

return ans*f;

}int

n,m;

int first[n],cnt=1

;struct nodee[2*n];

void ins(int a,int b); first[a]=cnt;}

void insert(int a,int

b)int dep[n],top[n],sz[n],son[n],mx[n],fa[n],id[n],idp=1

;void f1(intx)}

void f2(int x,int

tp)}

bool

ly;int

a,b,t,cntq;

int f[2*m];

struct posq[m];

bool cmp(pos a,pos b)

void

pcalc()

void modify(int x,int y,int

k) q[cntq++]=(pos);

q[cntq++]=(pos);

if(cntq>1e6&&ly)

x=fa[top[x]];

}if(id[x]>id[y]) swap(x,y);

if(!ly)

q[cntq++]=(pos);

q[cntq++]=(pos);

}int t[1257

];pos *s[1257],*mp;

pos bb[m];

void jsort(int

n)int

main()

for(int j=1;j<=b;j++)

q[cntq++]=(pos);

q[cntq++]=(pos);

if(cntq>1e6&&ly)

}if(t==0)

if(ly)

if(now>=t) ans=ans+n-q[cntq-1].r+1

; printf(

"%d\n

",ans);

}else

printf(

"%d\n

",ans);}}

return0;

}

view code

北大資訊學夏令營模擬2019 5 21 神犇

時限 2s 空限 256mb 這題非常容易想到先做個字首和 a,b,c 分別表示三個人的粉絲數 不妨變成 a b,a c,b c 這樣相當於要從前面的字首中選個三維都不一樣的,使異或和最大。那麼這個可以暴力容斥地建出八種trie 每一維選和不選 然後自高位到低位的貪心,有的話走過去即可。注意如果有兩...

浴谷夏令營2017 8 1基礎數學知識的整理

1.1 排列 1.2 組合 c n,m c n 1,m c n 1,m 1 1.3 二項式定理 a b n c n,i a i b n i 例1.1組合數 快速冪1.4四種放球方法 1 n個不同球放入m個不同袋子 m n 2 n個相同球放入m個不同袋子 隔板法 c n m 1,m 1 3 n個相同球...

遼寧OI2016夏令營模擬T3 chess

放棋子 chess.pas c cpp 題目大意 現在有乙個 n m 的棋盤,現在你需要在棋盤上擺放 2n 個棋子,要求滿足如下條件 1 每一列只能有乙個棋子 2 每一行的前 xi 個格仔有乙個棋子,而且最多有乙個棋子 3 每一行的後 yi 個格仔有乙個棋子,而且最多有乙個棋子 求一共有多少種不同的...