18 8 27 考試總結

2022-05-20 01:48:09 字數 4641 閱讀 1620

這道題有dalao直接o(1)搞得 然而本蒟蒻只會二分 + 貪心

這道題要使能夠容納的點最多 其實就是一張菊花圖

二分列舉直徑長度 判斷一下能夠容納的點數是否大於等於剩餘的點數

點數不夠的話我們總可以通過調節鏈的長度總可以使他合法 就完了

這道題就是一道樹狀陣列的題 我考試的時候調了兩個小時 就少了一句話 我恨

因為可以發現e的範圍很小 並且每乙個小字串都是乙個個懟在上面的

然後可以發現 對於每乙個字串的相同位置 它們模上小字串的長度的餘數都是相等的

所以可以通過狀態合併 sum[ i ][ j ][ k ][ id ]表示到了第 i 個位置 模上 j 餘數為k的位置 id號字元的個數

所以這個東西就可以通過樹狀陣列維護

對於e( u , v )這條邊而言 要使該邊一定出現在最小生成樹中 

這條邊的邊權就一定要小於所有能夠除了該邊之外連通u v兩個點的鏈上的最大值的最小的那個

也就是小於u v兩個點在最小生成樹上的路徑中的最大值

所以這條邊可能會出現兩種情況

1.非樹邊 

根據最小生成樹的性質可以知道 對於虛線 它的答案就是淺灰色邊中的最大值 - 1

2.樹邊

對於紅色這條邊 要使他出現在最小生成樹中 那麼他一定是連線兩個連通塊中所有邊的最小值

也就是說它小於所有黃色邊 那麼怎麼實現這個東西呢

每次遇到黃色邊 就將它的兩個端點在樹上的路徑權值分別與它的值取min(初值賦正無窮)

(因為連線這兩個連通塊的邊在樹上的路徑一定經過紅邊) 所以就達到了取min的效果

演算法就是mst... 這道題真的**量好大 改了半天cnm

**

#include #define oo 1e9

using

namespace

std;

const

int n = 1e6 + 5

;int n,fa[n],fat[n],tot,nex[2 * n],tov[2 * n],ntot,nex1[2 *n];

int head1[n],val[2 * n],val1[2 * n],tov1[2 * n],head[n],co[2 *n];

int m,size[n],son[n],in[n],out[n],seq[n],dep[n],top[n],idc,f[2 *n];

int f1[4 * n],tag[4 *n],ans[n];

bool

isnot[n];

struct

edge e[n];

bool cmp(const edge & a,const edge &b)

int find_fa(int

u) void

init( )

void add(int u,int v,int

w) void add1(int u,int

v) void

build( )

else

}}void dfs1(int u,int

fa)

}void dfs2(int u,int

tp)

}void update(int

o) void build_tree1(int o,int l,int

r)

int mid = (l + r) >> 1

; build_tree1(

2 *o,l,mid);

build_tree1(

2 * o + 1,mid + 1

,r);

update(o);

}int query_tree(int o,int l,int r,int l,int

r)

int mid = (l + r) >> 1

;

int ans = 0

;

if(l <= mid) ans = query_tree(2 *o,l,mid,l,r);

if(mid < r) ans = max(ans,query_tree(2 * o + 1,mid + 1

,r,l,r));

return

ans;

}int query(int u,int

v)

if(dep[u]

ans = max(ans,query_tree(1,1,idc,in[v] + 1,in

[u]));

return

ans;

}void push_down(int

o) }

void modify(int o,int l,int r,int l,int r,int

w) push_down(o);

int mid = (l + r) >> 1

;

if(l <= mid) modify(2 *o,l,mid,l,r,w);

if(mid < r) modify(2 * o + 1,mid + 1

,r,l,r,w);

}void modify_tr2(int u,int v,int

w)

if(dep[u]

modify(

1,1,idc,in[v] + 1,in

[u],w);

}int query_tr2(int o,int l,int r,int

pos)

push_down(o);

int mid = (l + r) >> 1

;

if(pos <= mid) return query_tr2(2 *o,l,mid,pos);

else

return query_tr2(2 * o + 1,mid + 1

,r,pos);

}int

main( )

memset(tag,

0x3f3f3f,sizeof

(tag));

memset(f1,

0x3f3f3f,sizeof

(f1));

int p = f1[0

]; dep[

1] = 1

; sort(e + 1,e + m + 1

,cmp);

build( );

dfs1(

1,1); dfs2(1,1

); build_tree1(

1,1,idc);

for(int i = 1;i <= m;i ++)

}for(int i = 1;i <= m;i ++)

}for(int i = 1;i <= m;i ++) printf("

%d "

,ans[i]);

}

考試總結 CQOI2017 考試總結

再奮鬥一年,爭取ak noip2016 cqoi2017 這是去年我立的flag。看考場,電腦挺快,而且配置和評測機一樣,可以放心的在自己的電腦上卡常測試啦,好評。碼了一道fft的題,沒網只好拷著回家交,鍵盤蜜汁小,enter佔據了兩行,旁邊還有關機按鈕。座位安排奧妙重重,和巴蜀dyf大神坐在一起。...

MBA考試總結

終於考完了 mba入學統考,兩年來參加了兩次,感覺還是挺辛苦和有壓力的。第一年沒有通過是因為之前了解太遲,大概準備了 20天左右,最後還是功成垂敗。09年其實也一直沒有心情複習的,逼到最後的 20天,狠了一把勁,還是狠狠的複習了幾天,貌似今年應該可以通過了。總結經驗如下 1 如果你決定去做一件事,請...

2016 7 14考試總結。

今天的考試,總的來說不難,但是考得很差,簡直 從中暴露出對知識的掌握不牢固,練習不夠等問題。1.求 方程x1 2x2 nxn m的所有非負整數解 x1,x2,xn 的個數。這個題目在加上取餘運算後就是乙個貨幣系統的問題。也就是揹包。難以接受自己連這是個揹包問題都沒看出來。3 2.其實邪狼王的貪婪也很...