考试总结 模拟86

T1考场上想的是i^j是否有规律,思考了有一个半小时,一些不着边的规律

T2模了半天规律,没有想dp

T3大概想到了最暴力的0分dp,然后伪推了一个性质,暴力没调过,总得分30,最后40分钟几乎心态爆炸没有去想T1

T1

二进制计算的解法大多都是考虑每一位

或者直接算每一位对ans的贡献,或者扔到Trie树里考虑进行决策

这道题目的具体做法是考虑每一位j有多少个1和0的,那么贡献就是1<<(j+1)*num_1*num_0

 如何去数[L,R]内某一位0和1的个数,

考虑前缀相减,只计算[0,X]的1的个数,打表可以发现,这是成循环的即可O(1)计算

所以打表找规律应建立在转换了一定问题的基础上

T2「博弈论」

一道没见过的,简单博弈论?

其实在模了半天规律后就发现了从一个先手必败态按照操作规则只能转移到先手必胜态

那么就可以考虑dp从(0,0,0)开始进行刷表(向外转移)

外层n^3枚举状态,若这是必败态则向外转移,7*n,类似筛法的思路

必败态不会很多,可以A掉

T3「简单(du liu)DP」

性质一:存在最优的情况是中间的数都会不漏地选上,而两端的不确定

有绝对值的题重点是把绝对值搞掉

那么可以发现,(性质二):中间每一段对最终ans的贡献的系数是+2,-2,0,1或k的情况的两端的是+1,-1,而且每一段的每个数贡献系数相同

定义f[i][j][0/1/2/3]表示,考虑到i,已经有了j个段,当前段位于第0/1/2/3  -2/0上升阶段/0下降阶段/+2 状态

转移时注意的是,1和k的段的系数转移时的系数为+1/-1,因为两端的不一定都选,所以这个特判必须写在所有的1和k的段

原文地址:https://www.cnblogs.com/casun547/p/11736025.html