20190812

——“梦某的名字,是希望的意思。”  (一口毒奶

——“为了野心.和必须得到的东西.”

 某诺已经菜成渣了.

 不是命中必然,是运里偶然.

 $T1$ 码了半小时,调编译,过样例,弃。

 剩下时间刚$T2$,码了一个过不去样例的DP,又想到建$m^2$的边,在树上找最大价值的链,嘤?还是过不了样例……时间不多以后打算打搜索,还是过不了样例w&#@¥×%……#&×@@……¥&  吃了$S$一样难受.

 自觉的倒着翻,$T2$  $WA60$  ? 真的是运气,真的,数据水带来的假象。

 ——“那谁,**诺啊,你那$T3$看了没有?”

 ——“看了,看了。”(是啊,只是看了。都没有QJ一手

 ——“不做$T3$,那这场考试也是失败的啊......”

 对,我太失败了..我配不上自己的野心。

 


$T1$. 引子

 模拟 水题 过了 模拟题记得注意边界。


  

$T2$. 可爱精灵宝贝

 数据水,瞎打有分。非正解搜索,及时$break$。

 正解DP 俩数组 $f[i][j][t]$   $g[i][j][t]$ .

 分别代表经历 $[i,j]$ 一段后位于$i$和$j$的最大价值

 对于一个区间,遍历一遍就好,就是遇到物品就拿,反正不亏。

 考虑扩展

 从初位置向外转移到 $[i,j+1]$,$[i-1,j]$,思考为什么,打过$DFS$或$BFS$的应该清楚,初状态只有一个,拿$BFS$想,每次只会向左右扩展,而从左右扩展到现在并不能保证左右合法(也不是不行,加判断语句就好了,我的$WA60$思路就是由前一个状态转移到现在,不过特别麻烦,而从现在扩展到两边却很容易)扩展时考虑当前可不可拿就好。

 暂提一个坑点,我们给出状态赋值时,在$sort$完的新序列找到$k$点的位置,某$hx$如下打道:

 $int$ $st;$

 $for(int i=1;i<=m;i++)$

  $if(a[i]<=k) st=i;$

  $else break;$

 $memset(f,0xcf,$ $sizeof$ $ f);$

 $f[st][st][1]=0;$

 考虑为什么错

 当你的k本身就是一个贡献点时,这样做消除了k的贡献。

 你在原序列中插入一个新的 $k$ ,贡献呢,是$0$吗?如果序列中本来有 $k$,如果选择了可以贡献答案的那个 $k$ ,这个 $k$ 的贡献就没了。

 如何避免? 打上花火($pa$ $to$ $hi$ $ta$ $te$ $saita$,$ha$ $na$ $mi$ $wo$ $mei$ $teita$突然鬼畜  标记强行查找,即精准到插入的那个$k$

 或者判断是否原序列中有,给初值附上贡献而不是$0$.

 或改变$sort$第二优先级,其实也是打标记思想精准找到插入的那个$k$.

 实现起来很简单的。


$T3$. 相互再归的鹅妈妈

 不会,鸽了,刘坑。


原文地址:https://www.cnblogs.com/bilibiliSmily/p/11342378.html