考試反思 0309省選模擬41 突破

2022-02-03 02:15:23 字數 2637 閱讀 6934

是沒a題的人裡的最高分。但是有什麼用嗎。

三個最高的暴力,加起來也頂不過乙個$ac$

一方面是思考不專注,另一方面是時間分配過於分散了。

每道題留的時間都不夠長結果就乙個都沒想出來。

明明沒怎麼走神但是感覺還沒怎麼想呢抬頭一看就10點了。然後就只能被迫去打暴力了。

改題效率也不高,看見$t2$的大資料結構就慫了,然後就一直耗著了。。。

t1:要換換名字

大意:給定$n$字串,要求選定每個字串的乙個非空子序列,兩兩不同,最長的盡量短。輸出方案。$n,maxlen \le 300$

首先,乙個粗暴地想法,就是對於每個字串,向它的所有子串行連邊,建出乙個二分圖,看是否能匹配$n$對。

然後發現,當乙個串的子串行個數超過$n$時,這個串一定能在不與其它串衝突的情況下參與匹配。

所以我們只需要搜出每個串最短的$n$個子序列就可以了,最後跑網路流最大匹配就行。

搜子串行的話,維護$nxt[i][j][k]$表示第$i$個字串位置$j$以後下乙個字元$k$的位置。這東西倒著掃一遍即可得到。

然後就$bfs$每次擴充套件$26$個字元就好,可以發現這樣就能得到長度遞增,字典序遞增的串了。

1 #include2

using

namespace

std;

3 mapm;

4int nxt[333][333][33],n,len[333],pc,q[333],cnt,mxf,fir[123456],l[999999],to[999999],ec=1,w[999999],d[123456],q[123456];5

string qs[333],ans[333],res[99999];char s[333][333

];6 vectorv[333];7

void link(int a,int b,int w)

8void con(int a,int b,int w)

9bool

bfs()

15int dfs(int p,int f)return f-r;22}

23int

main()

30for(int i=1;i<=n;++i)for(int h=1,t=1;h<=t;++h)for(int c=0;c<26;++c)if(t-1

<=n&&nxt[i][q[h]][c])

35for(int i=1;i<=cnt;++i)con(0,i,0

);36

for(int i=1;i<=n;++i)for(auto j:v[i])con(j,i+cnt,1

);37

for(int i=1;i<=n;++i)con(i+cnt,cnt+n+1,1

);38

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

48 }puts("-1"

);49 }

view code

t2:動態半平面交

大意:樹,點權。多次詢問$p$子樹中距離不超過$u$的點的點權$lcm$。$n \le 10^5,a_i \le 10^7$

大資料結構,先鴿著。

t3:獲取名額

大意:數列,求$1-\prod \limits_^ (1-\frac)$。多次詢問給出$l,r,x$。$n,q \le 6 \times 10^5,eps=10^$ 

發現如果我們每次挑出$a_i$最大的,然後這樣答案就會很快收斂。

那麼對於$\frac>0.5$的不斷找最大值遞迴兩邊區間就好。$log$層就完事了。

對於$a_i$小的怎麼辦?

累乘不好處理,我們知道$\prod a_i =exp( \sum ln a_i)$

我們又知道$ln(1-x)=\sum\limits_^ \frac$

這就是乙個經典的泰勒展開,只要預處理$a_i^j$的字首和,迭代個$20$輪就好了。

1 #include2

using

namespace

std;

3#define s 666666

4long

double a[s],pre[28][s],st[28][s],ans,x;int stp[28

][s],hb[s],a[s],n,mx,m;

5void dac(int l,int

r)17}18

intmain()

27for(int i=1;i<=n;++i)st[0][i]=a[i],stp[0][i]=i;

28for(int j=1;1

<1

<=n;++i)

29if(st[j-1][i]>st[j-1][i+(1

<1)])st[j][i]=st[j-1][i],stp[j][i]=stp[j-1

][i];

30else st[j][i]=st[j-1][i+(1

<1)],stp[j][i]=stp[j-1][i+(1

<1

)];31

for(int j=0;1

<1

<1&&i<=n;++i)hb[i]=j;

32while(m--)

36 }

view code

考試反思 0502省選模擬86 恐懼

還是狀態持續不佳。但是今天沒那麼困,雖說腦子還是不想動。一看到原題就慫,毛病。好像考場上遇到原題的話,得分會比非原題還低。t2 作為原題就直接放棄正解了 然後乖乖的打部分分,結果教練把子任務放錯了於是丟了 15pts 放錯子任務同時也導致 直接輸出 0 能多 20 分。啊人就應該有信仰啊為什麼我沒輸...

考試反思 0316省選模擬47 偏頗

這套題的考察思路其實不錯。三暴力,掛乙個。t1 是送分,但是一眼覺得是大資料結構,於是直接扔掉了。結果竟然是個原題。dy 講的只記住了只言片語思路早就忘了。好歹這次會了。t2 的話寫了個亂搞,結果把本來到手的 20 給寫死迴圈了,加了句判斷就 50 了。t3 差不多想到正解了,但是毒瘤出題人不給部分...

考試反思 0313省選模擬44 習慣

我也不知道我在幹什麼了。僥倖還是害人啊。t1 乙個變數名的大小寫寫錯了 shift沒按住 然後就爆零了,丟了 45 分。然後 oj 貌似終於支援靜態記憶體了?不知道反正我就謎之 mle 了,我根本都沒用那東西。然後開小點就有 35 分了。85 分的場打成 5 分。哎。話說這套題好噁心啊,部分分很少且...