暑假练习1 7.26

胡乱刷题

题1

思路

简单dp,设状态fi为前i个位置最多能删除元素的个数,对于位置i,状态为fi=max(fi1,fj1+ij+1),aj=ai,对于一个数x,维护mxx=max(fj1j+1),aj=x,所以fi=max(fi1,mxai+i)

题2

思路

如果n不是质数,就按行1234...排下去,m不是质数就按列排下去。
两个都是质数的话,假设原始阵列为aij=(i1)m+j,则合法的一个阵列为先排奇数行,再排偶数行。

题3

思路

这个很有意思。首先分两种情况,最大数唯一和不唯一。不唯一的话最后就只剩下这几个原本的最大数互相作用了,所以方案数为n!。否则要看最大数和次大数的差值,如果大于1就是0,因为当其他数都为0时原本的最大数至少为2,那么将至少连续两轮是它。
当最后只剩下最大数和次大数时,如果最大数在最后,那么它就会连续重复,所以不能排最后,所以思路是这样:先放置次大数,方案有c1=cntlmx! ,然后根据插板法,最大数能放的地方只有c2=cntlmx个,之后就是其他数随便放了,方案为c3=i=cntlmx+2ni=n!(cntlmx+1)!

题4

思路

对于min(tj+|aji|),1jk,一般对于这种题,都是尝试把绝对值符号去掉,所以从左到右弄一遍,再从右到左弄一遍就ok了。维护与当前位置无关的值,如果是从左到右,那么公式为min(tj+ia[j])=i+min(tja[j])),同理右到左为
min(tji+a[j])=i+min(tj+a[j])).

题5

思路

排序题,对于某个字母x,单词按照cntxcntnotx的顺序从大到小排序。

题6

思路

假设当前是x,那么(x+b)a=ax+ab,后面那个ab可以通过不断增加b的方式解决,那么问题就显而易见了,枚举a的次幂,判断(nax1) 模b是否等于0。要特判一下a等于1的情况。

posted @   Liang2003  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示