CFCF2182F1.Christmas Reindeer (easy version)
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是本题的简单版本。不同版本之间唯一的区别在于 n 和 m 的上界。在本版本中,n≤500 且 m≤500。
你有 n 只圣诞驯鹿,第 i 只驯鹿的力量为 2ci。
一组 k 只圣诞驯鹿的负重能力的计算方式如下:
- 首先将这些驯鹿按力量从大到小排序。排好序的力量记作 c1′,c2′,…,ck′,其中 ci′≥ci+1′;
- 然后,这组驯鹿的负重能力等于 c1′+⌊2c2′⌋+⌊4c3′⌋+⋯+⌊2k−1ck′⌋。
注意,有些驯鹿对负重能力的贡献可能为零。
你需要处理三种类型的查询:
- 向驯鹿群中添加一只力量等于 2x 的驯鹿;
- 从驯鹿群中移除一只力量等于 2x 的驯鹿;
- 计算从现有驯鹿群中选出若干只(可能全部)组成一组,使得这组驯鹿的负重能力至少为 x 的选法有多少种。
如果驯鹿群中有多只力量相同的驯鹿,它们被认为是不同的。例如,如果有两只力量都是 1 的驯鹿,当你需要计算负重能力至少为 1 的组数时,有 3 种方法:可以只选第1只,或只选第2只,或两只都选。
输入格式
第一行包含两个整数 n 和 m(1≤n,m≤500)——初始驯鹿的数量和查询的数量。
第二行包含 n 个整数 c1,c2,…,cn(0≤ci≤60),表示每只驯鹿的力量,具体来说,第 i 只驯鹿的力量为 2ci。
接下来 m 行,每行对应一个查询,格式如下:
- 1 x(0≤x≤60)——向驯鹿群中添加一只力量为 2x 的驯鹿;
- 2 x(0≤x≤60)——从驯鹿群中移除一只力量为 2x 的驯鹿;
- 3 x(1≤x≤1018)——计算有多少种选法可以从驯鹿群里选出若干只组成一组,使该组负重能力至少为 x。
输入额外约束:对于每个类型为 2 的查询,当前驯鹿群内至少有一只力量为 2x 的驯鹿。
输出格式
对于每一个类型为3的查询,输出一行一个整数,表示可行组数。由于答案可能很大,请输出该数对 998244353 取模后的结果。
输入输出样例
输入#1
3 7 2 1 1 3 5 3 6 1 2 3 6 3 5 2 1 3 5
输出#1
3 0 4 10 4
说明/提示
让我们来看第一个样例。初始时,有三只驯鹿,力量分别为 4、2、2。
- 第一次查询,需要计算负重能力至少为 5 的组数。有三组可行:{1,2}(第1、2只驯鹿),{1,2,3},和{1,3};
- 第二次查询,需要计算负重能力至少为 6 的组数。即使全选,负重能力也只有 4+⌊22⌋+⌊42⌋=5,因此没有可行组;
- 第三次查询,添加一只力量为 4 的驯鹿,我们称之为第4只;
- 第四次查询,可行组有 {1,4}、{1,2,4}、{1,3,4} 和 {1,2,3,4};
- 第五次查询,可行组数为 10;
- 第六次查询,移除一只力量为 2 的驯鹿,假设移除的是第2只,现在只剩驯鹿1、3、4;
- 第七次查询,需要计算负重能力至少为 5 的组数。可行的组有 {1,3}、{1,4}、{1,3,4}、{3,4}。