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

初衷

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


正文

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

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

08T2

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

08T3

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

08T4

fif_i表示i1i-1时刻空闲,ii时刻的最小工作时间,若有时间,则fi+tj=min{fi+tj,fi+tj}f_{i+t_j}=min\{f_i+t_j,f_{i+t_j}\},无时间则fi+1=min{fi}f_{i+1}=min\{f_i\}

09T2

高精乘高精

09T3

可以枚举端边跑dijdij,这样是O(n4)O(n^4)【可以用堆优化一个log】,也可以先floydfloyd再枚举断边O(n3)O(n^3)

09T4

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

13T2

开个桶统计即可

13T3

fi,jf_{i,j}表示划分完前ii位,最后一段长度为jj的最小代价,记gig_i表示fif_i中的最小值,则fi,j=gij+12+max{ai...j}f_{i,j}=g_{i-j}+12+max\{a_{i...j}\},由于长度最长为255,所以能过

13T4

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

14T2

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

14T3

bfsbfs

14T4

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

15T2

dfsdfs,注意预处理接上后长度变化

15T3

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

15T4

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

16T2

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

16T3

fi,jf_{i,j}表示第一个串做完了1i1\sim i,第二个串做完了1j1\sim j,初态显然fi,0=iK,f0,i=iKf_{i,0}=iK,f_{0,i}=iK,转移fi,j=min{fi1,j1+abs(s1is2j),min{fi1,j,fi,j1}+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\},终态fn,mf_{n,m}

16T4

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

17T2

dfsdfs暴搜,注意搜索顺序可以改变

17T3

08T3弱化版,不用拓扑判环也行(dfsdfs

17T4

fi,j=min{fi,k+fk,j+vi,j}f_{i,j}=min\{f_{i,k}+f_{k,j}+v_{i,j}\}

18T2

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

18T3

fi,jf_{i,j}表示前ii个城市建了jj所学校,初态f1,i=val(1,i)f_{1,i}=val(1,i)fi,j=min{fk1,j1+val(k,i)}f_{i,j}=min\{f_{k-1,j-1}+val(k,i)\}
valval复杂度是n2n^2的,这样子复杂度是n5n^5级别的,不过跑不满所以可以过,当然你可以对valval记忆化,这样其最多跑n2n^2,复杂度就变成了n3n^3

18T4

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

19T2

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

19T3

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

19T4

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

20T2

bfsbfs

20T3

本人写了一个比较次的dpdp 70分,fi=min{fj+val(j+1,i)}f_i=min\{f_j+val(j+1,i)\}
正解暂时不会

20T4

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

后记

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

制作不易,转载需告知

©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值