JZYZ作业好题
1|0敲砖块
首先把砖块向左对齐, 这样选择第
(
i
,
j
)
(i,j)
(i,j)块的前提是第
(
i
−
1
,
j
)
,
(
i
−
1
,
j
+
1
)
(i - 1, j),(i - 1,j + 1)
(i−1,j),(i−1,j+1)被选
满足敲掉的砖块总代价最大,显然是动态规划,接下来我们思考如何设计状态
按照正常的思路应当是
f
[
i
]
[
j
]
f[i][j]
f[i][j]表示到第
i
i
i行一共选择
j
j
j个的最大价值,但是选择第
i
i
i行的每一个所对应的
f
[
i
−
1
]
[
]
f[i-1][]
f[i−1][]的状态和选择都不一样,且很不好维护最值(貌似还要容斥)
我们尝试更改状态,思考敲掉一个砖块需要哪些被敲掉
若敲掉蓝色点
(
i
,
j
)
(i,j)
(i,j),显然第
j
j
j至少敲掉前
i
i
i个, 第
j
+
1
j + 1
j+1列至少敲掉前
i
−
1
i - 1
i−1个,依次类推
所以我们发现,如果按列考虑,不仅可以保证一定可以敲掉,而且统计答案非常方便
设计状态 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]表示第 i i i列,敲掉前 j j j个且一共敲掉前 k k k的最大价值
则 f [ i ] [ j ] [ k ] = m a x ( f [ i + 1 ] [ s ] [ k − j ] + s u m [ j ] [ i ] , s ≥ j − 1 ) f[i][j][k]= max(f[i+1][s][k-j]+sum[j][i],s\ge j-1) f[i][j][k]=max(f[i+1][s][k−j]+sum[j][i],s≥j−1), s u m [ j ] [ i ] sum[j][i] sum[j][i]表示第j列取前 i i i个的价值
复杂度为 n 5 n^5 n5,但是跑不满,应该除以一个至少为4的常数,所以能跑过,不过枚举 s s s可以优化掉,这样就变成 n 4 n^4 n4
2|0Circle
如果一个序列为 101001100 101001100 101001100,我们发现答案就是由 0 0 0隔开的连续 1 1 1的周期的 l c m lcm lcm
那么一段连续 1 1 1的方格的周期是多少,手玩可得 c n t + 3 cnt+3 cnt+3, c n t cnt cnt为连续 1 1 1的个数
那么问题就转化为了 ∑ c n t i < = 150 \sum cnt_i<=150 ∑cnti<=150, l c m ( c n t 1 + 3 , c n t 2 + 3 , c n t 3 + 3... ) lcm(cnt_1+3,cnt_2+3,cnt_3+3...) lcm(cnt1+3,cnt2+3,cnt3+3...)的个数
设计状态 f [ i ] f[i] f[i]表示前 i i i个位置的 l c m lcm lcm个数,且 i i i个位置一定放 1 1 1
发现, l c m ( c n t ) lcm(cnt) lcm(cnt)最大也不会爆 L L LL LL,最大的为选择5个30左右的质数相乘
考虑用 s e t set set转移, f [ i ] f[i] f[i]表示前 i i i个位置且第 i i i个位置一定放 1 1 1的 l c m lcm lcm种类
那么考虑第 i i i个位置会向前填充多少 j j j个连续的 1 1 1,为保证状态的合法, f [ i ] f[i] f[i]应由 f [ j − 1 ] f[j-1] f[j−1]转移而来,保证 i i i向前的是单独的一段,解释起来太麻烦了,直接看代码
做完发现时间复杂度偏高,但是150非常小,直接打表即可
__EOF__

本文链接:https://www.cnblogs.com/Nogtade/p/17815972.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端