考試反思 1030csp s模擬測試94 未知

2022-02-18 14:53:14 字數 3072 閱讀 1684

排名也未知。第1或第5。

分數也未知,300或260。

人生真是大起大落。。。

啊啊啊啊啊我好感動啊竟然重測了一次~~~~~

評測機怎麼測怎麼re,本機怎麼測怎麼ac(任意編譯指令,任意評測平台)

結果原來是系統棧空間開小了導致遞迴爆棧了啊。

重測就是把棧空間開到記憶體限制的大小然後我的**就沒鍋了。

然後去隔壁用評測機調了乙個小時也找不到re的原因。。。

也許是對考場上全程無摸魚一直在思考的獎勵吧。。。

然而b哥又被防ak了也是稍慘。

人生第一次ak非b組題,還是有一點激動。。。

出題人部分分給的很好,難得有提示意義。

好事就是讓我這個傻子也想出來了,壞事就是所有人的分數都很高%%%。

所以想在總分上憑這一場來翻身還是妄想。

繼續加油,沒有懈怠的機會。

畢竟又不是誰都像skyh一樣兩場不考都對排名沒影響。。。

upd:人生真是大起大落我又260了沒ak我感覺我在farting。。。為什麼要這麼調戲我的感情啊。。。

t1:涼宮春日的憂鬱

寫高精就好了,留300位精度絕對炸不了。

其實double就夠了。求log精度更高。(好像並沒有300位+比較位數的精度高)

1

//remember to submit

2 #include3

int max(int a,int b)

4struct

int13 friend bool

operator

<=(int x,int y)

18void

reset()

22}fc,pw;

23int

main()

33 }

view code

t2:漫無止境的八月

差分。之後操作就是在相距k的位置上一加一減。

其它位互不影響。所以把陣列下標直接對k取模即可。

差分的特殊之處在於如果你對序列末尾操作的話會在位置n+1進行加減,而這個位置是幾其實是沒有關係的。

所以同余於n+1的位置是否為0不會對答案產生影響。特判。

修改的話差分陣列只改變了兩個位置,判斷是否有新的0出現或消失即可。

1

//remember to submit

2 #include3

int n,k,q,cnt,p;long

long x[2000005];4

intread()

10int

main()

31 }

view code

t3:射手座之日

我複雜度是錯的,極端情況下是$o(\frac)$,其中k是乙個基於資料的常數

具體範圍我也不知道,我只知道$4 \leq k  \leq n$

但是可以優化到穩定的$o(nlogn)$,常數會很大,和b哥一樣。

看特殊性質部分分,a序列就是dfs序。

那麼問題就是對於每乙個子區間[l,r]找到最大的p滿足$dfn[p]<=l$且$r<=dfr[p]$

其中$dfn/dfr$表示p子樹的dfs序區間。

而「最大這個限制不好處理,我們把權值做一遍樹上差分,這樣的話問題就轉化成了:對於每乙個子區間[l,r]找到所有的p滿足$dfn[p]<=l$且$r<=dfr[p]$

列舉p,它的控制區間內的所有子區間都滿足條件,那麼答案就是

$\sum\limits_^ \frac$

其中$y$就是$x$陣列在樹上差分之後的陣列,即$y[i]=x[i]-x[f_i]$

而沒有了特殊性質之後怎麼做?

外層還是列舉p的話,內層的式子就不一樣了,是滿足上面條件的子區間數。

其實不考慮有包含關係的子區間,那麼答案就是$y[i] \times \sum \frac$

問題在於求出所有極長子區間。(極長是指不被包含的區間,如[l,r]存在時[l,r-1]不可能存在,而[1,4][7,9]可以共存)

把問題帶到樹上,考慮乙個葉子節點,它的合法區間就是乙個點。

其實對於每乙個點它最開始的合法區間都是自己那乙個點,後面還要合併上子樹內的所有點。

考慮怎麼合併。

因為a是乙個排列,所以這些區間當然不會有交集,那麼我們可以用乙個類似與歸併排序的過程來合併區間。

合併的過程中如果遇到$[l,p]+[p+1,r]$這樣的兩個區間,那麼就把它合併成乙個。

在回溯的同時統計$vector$裡面的所有極長區間累加答案即可。

當然這個複雜度不對,雖然也不是很好卡(出題人想不到有這種打法)

然而正解的一種是不再用$vector$歸併,而是直接用樹上線段樹啟發式合併來維護極長區間。

時間複雜度是$o(nlogn)$的。

因為lnc說我資料結構必掛所以考場上還真的沒有打資料結構2333

1

//remember to submit

2 #include3 #include4 #include5

using

namespace

std;

6 vectorl[200005],r[200005

],rel,rer;

7int ec,fir[200005],l[200005],to[200005],x[200005],y[200005],dfn[200005],dfr[200005];8

int a[200005],tim,n,pos[200005];long

long

ans;

9void link(int a,int b)

10void dfs(int p,int

fa)15

void pushin(int l,int

r)19

void dfs(int p,int

fa)int sz=l[p].size();

31for(int i=0;i2*y[p];32}

33int

main()

view code

考試反思 1114csp s模擬測試115 零遲

最後一次了,允許自己混進榜裡吧。沒有心態,原題不會做 真的忘了 t2的搜尋沒有分。零 遲 酷刑 只有在最後的時刻才開始意識到,一切的一切都已經晚了。就在眼前了。沒有機會了。退役,告別oi,粉碎夢想,這,就是最嚴苛的酷刑。生存,生存!hzoi2018!所有人!一年走來,我們還要繼續走下去!csp s,...

考試反思 1112csp s模擬測試111 二重

還是ak場。考前信心賽?而且t3的部分分還放反了所有80的都其實只有50。總算在ak場真正ak了一次。手感好,整場考試很順利。要不是因為t3是原題可能就沒這麼好看了。20mint1,50mint2,去趟廁所回來70min想到t3,110min寫完調完對拍完,然後去學skyh寫平衡樹了。然後我發現我不...

考試反思 1110csp s模擬測試108 消遣

是套廢題。t1題面錯了,t2細節多而暴力 部分分,t3題目錯了。t1 打表 題面應該是輸出差值期望而不是答案值期望。看到題目,果斷打表。答案就是所有值差之和除2的k次方。1 include2 int k,a 333333 long long ans 3int main view code t2 蛇 ...