分数 : 606050+10+0+050+10+0+0)

A. stick


先是一个数字,然后一串00,最后一串88。贪就完了。

注意模数是 99824499824485353。挂分 50pts50pts

B. game


正解爆搜。少打 break90pts90pts

答案很多,所以 yesyes 跑得很快。

最坏情况5×65\times 6,此时O(14×214×316)O(1^4\times2^{14}\times3^{16})

注意到数据很小,考虑可行性剪枝即可。

来自 永远的7日之都 .

C. noip


万恶的 O2O2RE  0RE\ \ 0

字典序从大到小搜索,DPDP 预处理 每个后缀首字母确定的情况下所能得到的最大权值每个后缀首字母确定的情况下所能得到的最大权值 ,判断当前是否  x\geq\ x (可行性剪枝)(可行性剪枝)

学的是 DP作为部分DP作为部分 的思路。

D. remove


区间 DPDP。求

min{a×k+b×i=1k(maximini)}min \left\{ \begin{aligned} a \times k + b\times\sum\limits_{i=1}^{k} \Big (max_i-min_i\Big) \end{aligned} \right\}

设方程 fl,r,max,minf_{l,r,max,min} 表示 消除区间 [l,r][l,r] 使其剩下的最大值为 max ,最小值为 min 的最小代价。gl,rg_{l,r} 表示 区间[l,r][l,r]中全消的最小代价。

所以

  1. 初始化 :

gl,r=ming_{l,r}=min{fl,r,max,min+a+b×(rl)2f_{l,r,max,min}+a+b\times (r-l)^2}

  1. 转移

左边空或右边空 :

  • fl,r,max,min=min{gl,k+fk+1,r,max,min}f_{l,r,max,min}=\min\{g_{l,k} + f_{k+1,r,max,min}\}
  • fl,r,max,min=min{gk+1,r+fl,k,max,min}f_{l,r,max,min}=\min\{g_{k+1,r} + f_{l,k,max,min}\}

两边都空

  • fl,r,max,min=min{fl,r,max,min+fk+1,r,max,min}f_{l,r,max,min}=\min\{f_{l,r,max,min} + f_{k+1,r,max,min}\}

端点刷表

  • fl,r+1,max(max,wl),min(min,wr)=fl,r,max,minf_{l,r+1,max(max,w_l),min(min,w_r)}=f_{l,r,max,min}
  1. g?

    gl,r=ming_{l,r}=min{fl,r,max,min+a+b×(maxmin)2f_{l,r,max,min}+a+b\times(max-min)^2}

  2. 离散化后 O(n4)O(n^4)

问题:

  1. 手抄斩手,使用CV大发。
  2. O2 要看返回值。
  3. 对拍数据要把时间卡到满,不能放水。