东莞历年特长生一句话题解

文章目录

        • 初衷
        • 正文
          • 08T2
          • 08T3
          • 08T4
          • 09T2
          • 09T3
          • 09T4
          • 13T2
          • 13T3
          • 13T4
          • 14T2
          • 14T3
          • 14T4
          • 15T2
          • 15T3
          • 15T4
          • 16T2
          • 16T3
          • 16T4
          • 17T2
          • 17T3
          • 17T4
          • 18T2
          • 18T3
          • 18T4
          • 19T2
          • 19T3
          • 19T4
          • 20T2
          • 20T3
          • 20T4
        • 后记

初衷

方便后来的学弟学妹们改题和理解,顺便纪念自己这两周的奋斗


正文

备注:10-12年的大部分由于本人懒没有做,所以会有残缺

历年的第一题往往是水题,就不提了

08T2

高精输出 2 ( n 2 ) 2^{(n^2)} 2(n2),最好用快速幂或压位优化

08T3

拓扑排序判环,直接在DAG上dp, f x = m a x { f y } + 1 f_x=max\{f_y\}+1 fx=max{fy}+1,若 x x x无子节点 f x = 100 f_x=100 fx=100

08T4

f i f_i fi表示 i − 1 i-1 i1时刻空闲, i i i时刻的最小工作时间,若有时间,则 f i + t j = m i n { f i + t j , f i + t j } f_{i+t_j}=min\{f_i+t_j,f_{i+t_j}\} fi+tj=min{fi+tj,fi+tj},无时间则 f i + 1 = m i n { f i } f_{i+1}=min\{f_i\} fi+1=min{fi}

09T2

高精乘高精

09T3

可以枚举端边跑 d i j dij dij,这样是 O ( n 4 ) O(n^4) O(n4)【可以用堆优化一个log】,也可以先 f l o y d floyd floyd再枚举断边 O ( n 3 ) O(n^3) O(n3)

09T4

f i , j f_{i,j} fi,j表示以 i , j i,j i,j为右下角的最大正方形边长,若 i , j i,j i,j合法, f i , j = m i n { f i − 1 , j − 1 , f i − 1 , j , f i , j − 1 } + 1 f_{i,j}=min\{f_{i-1,j-1},f_{i-1,j},f_{i,j-1}\}+1 fi,j=min{fi1,j1,fi1,j,fi,j1}+1,另 A n s f i , j + + Ans_{f_{i,j}}++ Ansfi,j++,做后缀和 A n s i = A n s i + A n s i + 1 Ans_i=Ans_i+Ans_{i+1} Ansi=Ansi+Ansi+1即可得到答案数组

13T2

开个桶统计即可

13T3

f i , j f_{i,j} fi,j表示划分完前 i i i位,最后一段长度为 j j j的最小代价,记 g i g_i gi表示 f i f_i fi中的最小值,则 f i , j = g i − j + 12 + m a x { a i . . . j } f_{i,j}=g_{i-j}+12+max\{a_{i...j}\} fi,j=gij+12+max{ai...j},由于长度最长为255,所以能过

13T4

可以让每个点的长度加上一个极大的数,最后再%掉,这样子它会优先最短再廉价,随便一种最短路算法都行

14T2

对于两个串 a , b a,b a,b,若 a + b > b + a a+b>b+a a+b>b+a,则 a a a排到前面

14T3

b f s bfs bfs

14T4

f i , j f_{i,j} fi,j表示前 i i i本书保留 j j j本,初态 f i , 1 = 0 f_{i,1}=0 fi,1=0,转移 f i , j = m i n { f k , j − 1 + a b s ( a i − a k ) } f_{i,j}=min\{f_{k,j-1}+abs(a_i-a_k)\} fi,j=min{fk,j1+abs(aiak)},终态 A n s = m i n { f i , n − m } ( i ≥ n − m ) Ans=min\{f_{i,n-m}\}(i\geq n-m) Ans=min{fi,nm}(inm)

15T2

d f s dfs dfs,注意预处理接上后长度变化

15T3

可以拓扑,也可以直接匹配(毕竟数据弱,要求低)

15T4

可以折半搜 O ( 2 n 2 ) O(2^{\frac n2}) O(22n),也可以转换成背包方案数 O ( n 2 ) O(n^2) O(n2)

16T2

快速幂,由于出题人傻逼,不用写扩展欧拉定理

16T3

f i , j f_{i,j} fi,j表示第一个串做完了 1 ∼ i 1\sim i 1i,第二个串做完了 1 ∼ j 1\sim j 1j,初态显然 f i , 0 = i K , f 0 , i = i K f_{i,0}=iK,f_{0,i}=iK fi,0=iK,f0,i=iK,转移 f i , j = m i n { f i − 1 , j − 1 + a b s ( s 1 i − s 2 j ) , m i n { f i − 1 , j , f i , j − 1 } + k } f_{i,j}=min\{f_{i-1,j-1}+abs(s1_i-s2_j),min\{f_{i-1,j},f_{i,j-1}\}+k\} fi,j=min{fi1,j1+abs(s1is2j),min{fi1,j,fi,j1}+k},终态 f n , m f_{n,m} fn,m

16T4

利用城市按照序号开放的性质,联想到 f l o y d floyd floyd第三维(开放城市),可以边做边弄,也可以做完之后二分

17T2

d f s dfs dfs暴搜,注意搜索顺序可以改变

17T3

08T3弱化版,不用拓扑判环也行( d f s dfs dfs

17T4

f i , j = m i n { f i , k + f k , j + v i , j } f_{i,j}=min\{f_{i,k}+f_{k,j}+v_{i,j}\} fi,j=min{fi,k+fk,j+vi,j}

18T2

题目描述有问题!!!大括号可以包括大括号,中括号小括号同理

18T3

f i , j f_{i,j} fi,j表示前 i i i个城市建了 j j j所学校,初态 f 1 , i = v a l ( 1 , i ) f_{1,i}=val(1,i) f1,i=val(1,i) f i , j = m i n { f k − 1 , j − 1 + v a l ( k , i ) } f_{i,j}=min\{f_{k-1,j-1}+val(k,i)\} fi,j=min{fk1,j1+val(k,i)}
v a l val val复杂度是 n 2 n^2 n2的,这样子复杂度是 n 5 n^5 n5级别的,不过跑不满所以可以过,当然你可以对 v a l val val记忆化,这样其最多跑 n 2 n^2 n2,复杂度就变成了 n 3 n^3 n3

18T4

n 2 n^2 n2暴力循环可以接上的模板

19T2

被包含的专家,尊贵的专家(只有ta能解决某一个问题),最优性
以上三个剪枝一起上可以过

19T3

提高组原题,并查集求基环树最小环

19T4

没做出来,听大佬说是拓扑

20T2

b f s bfs bfs

20T3

本人写了一个比较次的 d p dp dp 70分, f i = m i n { f j + v a l ( j + 1 , i ) } f_i=min\{f_j+val(j+1,i)\} fi=min{fj+val(j+1,i)}
正解暂时不会

20T4

提高组原题,每个点保留最大值次大值即可

后记

有问题可以在下方评论区问作者

制作不易,转载需告知

你可能感兴趣的:(东莞历年特长生一句话题解)