csp-s模拟测试53

  有时间就多写两篇。。。

  T1:对于一个矩阵,每次给一个下三角(半个正方形)的矩阵加上s,求最终元素。

  这个题是差分方面的,最终一次询问,那么我们就可以搞,一开始没思路。

  后来想了想序列上差分是什么?就是代表一个点比前一个多多少,所以修改l,r就是l+s,(r+1)-s,这样最终一求前缀和就知道了原序列。

  在想一想如果是矩阵怎么做,把左上角+1,右上角-1,左下角-1,右下角+1,然后横向求前缀和就出来了向下两条横线,上边数值都是1,下边数值都是-1,然后从上往下求前缀和,整个矩阵就是1,

  就是卡线。

  然后这个三角是一个道理,把左上角+1,右下角-1,斜向求前缀和,然后在从上往下推,但此时下边还没堵口,需要现将右下角的-1推到左侧,推成一根线,然后从上往下退的时候就截住了。

  T2:DP很好想,就是状态数不确定,直接可以枚举每次怎么打,$f(i,s)$表示剩余i次,字符串为s的期望个数,

  $f(i,s)=max(f(i+1,s1)+w1,f(i+1,s2)+w2)$两个选择,这个记忆化搜索即可,

  因为状态数最多是$sum_limit_{i=1}^{n} min(2^{i},C_{n}^{i})$发现没多少,所以直接开hash表就行了。

  另:这个题可以把第一维省掉,但是要区别01101和1101的区别,参考yzh大神可以在所有状态前面加一个1<<30,这样就能区别了,然后就愉快的压掉第一维。

  T3:被虎卡掉了思路。。。那个题只有第一问,然后第二问打贪心我发现。。。。。他无法决策是否反转父亲边。

  所以这个题要打DP,dp[i][0/1]表示是否反转的最优解,都要存下来。

  转移很特殊。。。。。。先古着

原文地址:https://www.cnblogs.com/starsing/p/11604140.html