T1:
本题中令记号 表示幂运算 。一个幂运算代数式可以通过加括号改变所有运算符号的运算顺序,否则从左到右运算,例如 表示。
对一个代数式 ,你可以任意加括号,求能得到的最小运算结果,你只需要输出最小结果对 998244353 取模的值。
容易想到把第一个 会把后面的无效,而对于前面的数,因为此时 (),肯定不加括号最优。
T2:
一棵个结点的树,每个结点有给定的点权。你需要为每一条边赋一个范围内的整数边权,要求每个结点的邻边边权的中位数不超过。求树的边权和的可能最大值,若无满足条件的赋权方案则输出-1。
本题中,认为个数的中位数为从小到大的第个数。
容易发现每条边只会取 中的一个。 表示 的子树, 的边权取 。
T3:
棋盘
题目描述
对一个的01矩阵,有一些位置的数字是确定的,另一些不确定。你需要填充不确定的位置的数字,要求其不能包含如下两种子矩阵
请判断能否按要求填充,若能则给出任意一种方案。
先把能直接确定的填了。
如果还有括号,我们采取这样一种方案:随便挑一个,然后把能由它直接确定的都填了;循环往复。断言这不会有问题。
证明:
假设当前局面开始时不存在已经不合法的。当填了一连串问号后,若导致矛盾,必然是恰好填进了一个 的不合法子矩阵,但是这应该在之前就确定了的。
T4(未完善):
一个长度的序列,下标范围,需要保证初始时值为的元素各两个。
之后,开始反复执行如下操作,直到操作后序列不发生变化:
- 从前到后考虑每一个位置,若且此时值为的元素并非唯一(即存在使得),则将减小1,然后结束本次操作。
容易发现最终一定会有恰好个位置非0。现在给出个非0位置的下标,求可能的不同初始序列的个数,答案对998244353取模。
显然应该从后往前考虑,因为前面的数不会影响后面的操作。
容易想到最后会留下一个 排列。证明考虑当前序列的最大数 ,最靠后的 一定会留下来,前面的总会变成 ;然后在所有剩下的 中,又会留下最后一个 ……
举个例子观察一下,比如最后留下了 ,最后一个 为了变成 ,只能填 ;倒数第二个 填 ,第一个 也是填 。注意到无论后面的 填什么,都会导致前面的 少一种可能。而这个 "可能" 就是这个 后面从 开始最多可以连续几个数都有。
记当前位置从 开始连续个数为 ,在各个位置的 组成一个序列 。而 相同的初始序列,最终的方案数也一样,这可以作为 DP 中将不同方案统一计算的手段。
粗略考虑 为填了 ,从 连续能到 的方案数。如果 最终留下 是好求的,只需要乘以一个系数( 减去后面 的个数)即可;但如果不是 ,我们为了知道填了它会让 能连续到哪里,也需要知道后面所有填过的位置,这就不可避免走向状压。
这里有一个经典的 trick:当一个东西很重要而无法确定时,不妨不确定,当真的要用到时再拿出来。
放在这题里,也就是 只考虑 的填法。只有当 试图向 转移,我们才把后面空着没填的 取出若干个填了。
但是 "取出若干个填了" 的方案数到底是多少?这里不清楚 …… 而且如果后面填了两个 ,前面还要避免使用 ,比较复杂。目测还要一个预处理 DP。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战