2020 04 23校內考試

2022-05-11 15:54:06 字數 3564 閱讀 5840

這次考試總的來說還算正常發揮,不過因為對演算法不熟悉沒有很快想出t2最後想出來卻沒時間調了。

最後得分100+77+100=277,rank2。(不過沒ak有點可惜)

剛開始我先把每到題看了一遍,然後t1沒太理解,t2沒啥思路,於是先去做t3。

t3一看就是道主席樹的裸題。

維護一下值和出現次數就行了,我很快就打完了**,但交上去只有25pts。

當時心態有點炸,仔細檢查一下發現是再減去lca的值時沒有*2,改了之後輕鬆a掉了這一題。

然後我再去做t2。

t2想到乙個很簡單的單次查詢$o(n)$的暴力貪心,寫完交上去拿了77pts,比期望高27pts,估計是出題人用腳造資料吧。

然後就沒有在去看t2了,決定先去搞t1。

此時剛剛過去1/3的時間。

t1描述太過奇怪,我大概又花了20min才看懂,感覺是個貪心。

然後寫了個**交上去只有25pts。寫個對拍(這花了我很長時間)發現了一些錯誤,改了之後交上去就a了。

這是離結束只有30min。

a了這題之後我信心大漲,去看t2。

我突然想到t2說不定可以用倍增去優化之前的暴力(賽後發現我的想法是對的),寫了之後有點小問題。

這時離考試結束只有2min了,最後也沒改過哪個錯誤,考試結束才改過來。

賽後發現做出來的人最多的t2我卻沒做出來,我認為這主要原因是我對某些演算法的不熟悉,畢竟我很久沒練倍增了。

還有就是花了太久時間取讀t1的題意了。

接下來我就來講一下題解:

原題:agc004d

題目描述:

題解:很容易想到貪心。

首先這個題很毒瘤的是1號節點必須連一條到自己的自環。剩下的結構如果我們把每條邊取反可以得到一棵以1為根的樹。

然後處理每個節點的深度和可以到達的最大深度,然後從葉節點向上回溯的時候如果某乙個節點這個數的差》=k的時候,就得把它連向1,之後它的子樹到1的距離都小於等於k了,如果它的父親即是一號點,則如果這個差值》=k-1時都要連向1.

如果它連向1了一條邊,則它的父親統計最大深度時也不用統計它的子樹了。

注意如果1本來沒連向自己答案還要加1。

#include #include 

#include

#include

#include

using

namespace

std;

const

int n = 100010

;struct

nodeedge[n

<< 1

];int

head[n], tot;

intn, k;

inta[n];

intdis[n], mx[n];

intans;

bool

vis[n];

void dfs(int

x) mx[x] =max(mx[x], dis[x]);

if (x != 1) }

void add(int u, int

v) ;

head[u] =tot;

}int

main()

else

}dfs(1);

cout

<

return0;

}

原題:arc060c

題目描述

題解考慮暴力貪心,其實就是求它一天最遠能走到哪,而這樣做的複雜度是$o(n)$的顯然不行(有77pts)。

考慮優化,如果二分找到一天最遠能走到哪,複雜度數$o(ans \times \log)$的,最壞情況還不如上乙個暴力(親測只有66pts)。

考慮每次不止走一天,很容易想到倍增優化:dp[i][j]代表從i走$2^j$天最遠能走多遠,有dp[i][j]=dp[dp[i][j-1]][j-1]

然後就很簡單了。

#include #include 

#include

using

namespace

std;

const

int n = 1000010

;int

n;int

a[n];

intl, q, ans, lst;

int dp[n][21

];int pow[21

];int

main()

}dp[i][

0] =lst;

}for (int j = 1; j <= 20; j++)

}while (q--)

}printf(

"%d\n

", ans + 1

); }

return0;

}

原題:abc133f

主席樹裸題,不講了。

#include #include 

using

namespace

std;

typedef

long

long

ll;const ll n = 100010

;struct

segmenttr[n * 20

];ll rt[n];

struct

nodeedge[n

<< 1

];ll head[n], tot;

ll n, q;

ll dis[n], dep[n], fa[n], son[n], sz[n], bl[n];

void

dfs1(ll x)

}}void

dfs2(ll x, ll chain)

}ll lca(ll u, ll v)

return dep[u] < dep[v] ?u : v;

}void

push_up(ll cur)

void ins(ll &cur, ll pre, ll l, ll r, ll pos, ll v)

ll mid = (l + r) >> 1

;

if (pos <=mid) ins(tr[cur].lson, tr[pre].lson, l, mid, pos, v);

else ins(tr[cur].rson, tr[pre].rson, mid + 1

, r, pos, v);

push_up(cur);

}ll ask_val(ll cur, ll l, ll r, ll pos)

ll ask_cnt(ll cur, ll l, ll r, ll pos)

void

solve(ll x)

}void

add(ll u, ll v, ll c, ll d) ;

head[u] =tot;

}int

main()

dfs1(1);

dfs2(

1, 1

); solve(1);

while (q--)

return0;

}

20200423 docker 虛擬化簡介

部落格主旨 什麼是虛擬化 dokcer介紹 docker版本以及安裝 docker架構 docker映象操作 docker容器操作 什麼是虛擬化 概念 在計算機中,虛擬化技術是一種資源管理技術,是將計算機的實體資源,如伺服器 網路 記憶體及儲存等,予以抽象 轉換後呈現出來。打破實體間的不可切割的障礙...

校內網簡介

校內網 xiaonei.com 成立於2005年12月,是中國最早的校園sns社群。2006年10月,千橡公司收購校內網,同年底,完成了千橡公司5q校園網與校內網的合併,並正式命名為校內網,網域名稱為 www.xiaonei.com。至此,校內網成為中國大學生市場具有壟斷地位的校園 校內網目前是隸屬...

20161104校內訓練

一道類似模擬的題,就根據所寫的東西來做就可以了。include define rep i l r for int i l i r i define per i r l for int i r i l i define erep i u for int i head u i i e i nxt usi...