10 26測試爆零記錄 瞎扯題解

2021-09-29 01:10:38 字數 4090 閱讀 2655

反正結論就是輸入n

nn就輸出nnn。

我考場上用的概率生成函式+組合等式毒瘤變形推出來的,不建議大家嘗試。。。

今天t1浪費的時間有點多,導致t3暴力掛掉了

證明考慮期望的線性性,在某乙個維度上進行一次平移就行了。

考場上想了兩個log

⁡\log

log 發現有90分就不想管了,20分鐘寫完走人。

發現我差分一下就是正解。。。

首先還是觀察性質,設t1,

t2

t_1,t_2

t1​,t2

​表示題目給出的兩棵樹,t

2t_2

t2​中的一條邊對t

1t_1

t1​中的一條邊有貢獻當且僅當它們互相都在對方的覆蓋路徑上。(看不懂不要問,反正我自己懂,題解上面也有解釋

於是把t

2t_2

t2​的邊放到t

1t_1

t1​上樹上差分,然後詢問一下t

1t_1

t1​中的這條邊在t

2t_2

t2​中覆蓋的路徑上有多少點存活。

單點加,鏈求和,差分一下轉化為子樹加,單點求和,由於我們只需要子樹內部的資訊,在dfs的時候利用時間差分一次即可,於是可以用樹狀陣列小常數維護。聽說std寫的線段樹合併mle了

**:

#include

#define ll long long

#define re register

#define cs const

namespace io

template

<

typename t>

inline t get()

inline

intgi()

}using

namespace io;

using std::cerr;

using std::cout;

typedef std::pair<

int,

int> pii;

#define fi first

#define se second

int n;

namespace t2

int in[n]

,out[n]

,dfn;

int fa[n]

,d[n]

,son[n]

,siz[n]

,top[n]

;void

dfs1

(int u,

int p)

++siz[u];}

void

dfs2

(int u,

int tp)

inline

intlca

(int u,

int v)

void

init()

}namespace bit

inline

intquery

(int p)

}namespace t1

int fa[n]

,d[n]

,son[n]

,siz[n]

,top[n]

;void

dfs1

(int u,

int p)

++siz[u];}

void

dfs2

(int u,

int tp)

inline

intlca

(int u,

int v)

void

init()

int ans[n]

; std::vector<

int> ins[n]

,del[n]

;void

work

(int u,

int p,

int eid)

for(

int re e=el[u]

,v=to[e]

;e;v=to[e=nxt[e]])

if(v!=p)

work

(v,u,e>>1)

;for

(int re i=

0;i.size()

;++i)

for(

int re i=

0;i.size()

;++i)

if(eid)

}void

solve()

work(1

,0,0

);for(

int re i=

1;i++i)cout<<<

" ";}}

signed

main()

非常詭異的倍增,做法自己看題解,主要是細節有點多,這裡扔乙個**:

#include

#define ll long long

#define re register

#define cs const

#define int ll

namespace io

template

<

typename t>

inline t get()

inline

intgi()

}using

namespace io;

using std::cerr;

using std::cout;

using pii=std::pair<

int,

int>

;#define fi first

#define se second

cs int n=

2e5+

7,inf=

1e9+

1e7;

int n,m,q;

std::vector<

int> g[n]

;std::vector<

int> pre[n]

;int siz[n]

,rk[20]

[n];

int to[20]

[n],son[n]

,lim[n]

;int d[n]

,q[n]

,qn;

intgo

(int s,

int k)

int p=std::

lower_bound

(pre[s]

.begin()

,pre[s]

.end()

,k)-pre[s]

.begin()

;return

go(g[s]

[p],k-

(p?pre[s]

[p-1]:

0)-1

);}signed

main()

for(

int re i=

1;i<=n;

++i)if(

!d[i]

)q[++qn]

=i;for

(int re i=

1;i<=qn;

++i)

for(

int re i=qn;i;

--i)

to[0

][u]

=son[u]

,rk[0]

[u]=rec;

for(

int re &j=

(lim[u]=0

);to[j]

[u];

++j)

--lim[u]

;}q=gi(

);while

(q--

) cout<<

go(s,k)

<<

"\n";}

return0;

}

怎麼說呢,今天算是最近幾場裡面翻車比較大的一次,t3暴力掛成了0分。

然而這是因為t1用了非常毒瘤的推法推了乙個半小時,然後後面時間就感覺有點不夠用了,前3分鐘t3才調過樣例,然而樣例太弱掛成0分。。。

l:你簡單題做少了

我:。。。

我tm還能說什麼。。。

10 5測試爆零記錄

昨天沒怎麼睡好,今天早上來的時候有點暈乎乎的。開題,一看t3好像做過,但是已經完全忘記了怎麼做了。然後開始xjb推,推得好像對了開始xjb亂寫,十點寫完。感覺t1的o n log 2n o n log 2n o nlog2n 隨便寫,然後就各種亂寫,然後卡了卡常。回頭靜態debug了一波t3,好像平...

圈圈 測試 環境 零星記錄01

1 vc6 程式設計 從這裡進 我是傳送到 桌面快捷方式的 點選 lanuch program 進去 這樣 有一些ddk的環境變數 就自己設定好了,不用人為再次設定 2 進去之後,是這樣 2.1 主要是 工程建立之後,再次開啟的話,不要使用 選單欄 driverwizard load project...

LeetCode刷題記錄 第283題(移動零)

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。class solution def movezeroes self,nums ...