2017 11 3離線賽總結

2021-08-10 06:54:17 字數 1184 閱讀 9104

有一段時間沒有離線賽了,感覺這次考得還過得去

失分小結:

估分:240

實際分數:230

萬萬沒想到自己第二題的n^3可以卡過去,正解為lcp(最長公共字首)

第三題就是抽直徑,然後就分類討論

注意直徑的性質:距離一點最遠的點一定是直徑兩端點中的一點

設兩個機房分別在a,b,他們在直徑上對應的點為u,v

那麼答案就會在lt到u或u到v或v到rt的路徑上,然後由於滿足單調性

對於中間的那部分,可以直接利用公式推算

#include

#include

using

namespace

std;

#define m 100005

inline

void chk_mx(int &x,int y)

#define lfor(i,x) for(int i=head[x];~i;i=nxt[i])

int n,dep[m],fa[m],mark[m],dis[m],fr[m],mx[m],num[m],real[m];

void dfs(int x,int f,int &t)

}void mdfs(int x,int f,int a)

}int lt,rt;

struct segment_treetree[m<<2];

void build(int l,int r,int p,int flag)

int mid=(l+r)>>1;

build(l,mid,p<<1,flag);build(mid+1,r,p<<1|1,flag);

tree[p].mx=max(tree[p<<1].mx,tree[p<<1|1].mx);

}int query(int l,int r,int p)

}lee,ree;

void init()//抽直徑

p=rt;while(p) //find max

lee.build(1,num[rt],1,0);

ree.build(1,num[rt],1,1);

}int main()

init();

int m;

scanf("%d",&m);

while(m--)

return

0;}

2017 1 13訓練總結

problem 0 給出乙個長度為n的序列a 1.n 將其變成序列b 1.n 的代價為 n i 1 a i b i 要使b 1.n 成為乙個不下降序列,問最小的代價 1 n 104 solution 這道題和之前做過的一道題很像,我的做法是用splay維護dp的陣列,打了二十多分鐘,還挺順的。pro...

2017 7 29 離線賽 總結

本著貪心的思想,我先斜著走到頂,然後直走到終點,顯然這是最優的,但是我忽視了斜著走的最後一步可以和直著走的第一步合併,我錯誤地把兩個過程分開了。假如我當時多找幾組資料來模擬說不定能找到這個錯誤,我也沒敲個暴力來對拍 因為暴力太長了 我得到的教訓是 不能肯定自己演算法的正確性是,不如敲個暴力對拍一下,...

離線賽20171006總結

這次考得還不錯,頗有些遺憾的是因為第一題我離正解已經很近了,可惜考試畢竟是考試,一開始的題目看錯沒看到相鄰的條件浪費了很多時間,到後來就沒有時間去寫正解了。這畢竟也是一種實力,不能說題目看錯失誤問題就不大。上次的考試兩個輸出只能模乙個沒看到導致少了70分。這種失誤還是太低階了,也太致命了。這種題目看...