标签:07 04 times add 2021 138 转移 dp mod
A. A
考虑枚举中位数,然后求一个最大的平均值
那么显然是在左边和右边取相同数量的最大值
发现这个东西是一个单峰函数,所以上个三分就能过了
比较尴尬的是考场第一次写三分,没有判断 \(f(lmid)=f(rmid)\) 的情况,挂掉很可观的分数
其实对于偶数的情况考虑右边的数的贡献就能证明必然相连,更进一步还能证明不存在偶数比奇数更优的情况
B. B
设 \(dp[i][j][0/1]\) 表示前 \(i\) 个数有 \(j\) 对冲突,最后一个数是不是构成冲突的方案数
那么转移考虑新加入的数是不是构成一个新的冲突就能得到 \(7\) 个转移
f[i+1][j][1]=add(f[i][j][1],f[i+1][j][1]);
f[i+1][j][0]=add(f[i+1][j][0],f[i][j][0]*max(i-j-1,0ll)%mod);
f[i+1][j][0]=add(f[i+1][j][0],f[i][j][1]*max(i-j,0ll)%mod);
if(j<i){
f[i+1][j+1][1]=add(f[i][j][0]*2%mod,f[i+1][j+1][1]);
f[i+1][j+1][1]=add(f[i][j][1],f[i+1][j+1][1]);
}
if(j>=1){
f[i+1][j-1][0]=add(f[i+1][j-1][0],f[i][j][0]*j%mod);
f[i+1][j-1][0]=add(f[i+1][j-1][0],f[i][j][1]*(j-1)%mod);
}
C.C
首先注意 \(FFT\) 预处理单位根的时候是 (complex){cos(pi/len*j),opt*sin(pi/len*j)};
也就是把 \(j\) 放到里面
不难写出来一个很多维的 \(dp\) ,每次枚举能新加入的数字来转移,最后再限制 \(2,5\) 做一次
同时也可以把它压到 \(2\) 维,也就是取 \(3,7,11,47\) 的公倍数,最后除一下
考虑有这样一个东西:\(10^{138} \equiv 1 \mod (3\times 7\times 11\times 13)\),这个东西可以使用各种方法得到,比如阶和 \(\varphi\)
那么把 \(dp\) 式子写出其 \(\mathrm{OGF}\) 就可以得到转移是一个循环卷积的形式
那么可以预处理 \(138\) 位,然后多项式快速幂做,不够的部分可以暴力跑一下
标签:07,04,times,add,2021,138,转移,dp,mod 来源: https://www.cnblogs.com/yspm/p/14628660.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。