普及T1 明明的随机数
排序去重即可。
1 |
|
普及T2 开心的金明
最基本的01背包。
1 |
|
普及T3 Jam的计数法
自己手写一个生成下一个组合的函数。
1 |
|
普及T4 数列
容易证明
令可以推出
随着$N$递增。
而$N$从$1$开始增加,因此该数列的第$N$项即为上式。
1 |
|
提高T1 能量项链
和石子合并差不多。
由于是环状,所以需要把原来的项链复制一遍。
很经典的区间DP。
1 |
|
提高T2 金明的预算方案
一个很不寻常的背包DP。
由于有附件的存在,我们需要将购买不同的附件相分开。
即将购买0到多个附件分别作为不同的决策考虑。
由于附件数不超过2个,所以我们购买某一个主件和其附件的时候至多只有4种决策:只购买主件,或者买主件和两个附件中的一个,或者主附件全买。
这样的话就归化成了一个普通的01背包问题。
1 |
|
提高T3 作业调度方案
模拟即可…
千万不要考虑什么奇奇怪怪的优化
1 |
|
提高T4 $2^k$进制数
组合数问题。
数码递增视为一个组合。
这样一个数,数码只有$\mathcal 2^k-1$个,故长度至多为$\mathcal 2^k-1$。
因此当$\mathcal w \ge \left(2^k-1\right) \times k $的时候,多出的那部分没有意义。此时令$\mathcal w = \left(2^k-1\right) \times k $。
对于一个$\mathcal w$,一个$\mathcal 2^k$进制数除去最高位至多有$\mathcal \lfloor \frac {w}{k} \rfloor$位。
考虑$\mathcal 2$到$\mathcal \lfloor \frac {w}{k} \rfloor$位,由于数码有$\mathcal 2^k-1$个,故此部分答案为
考虑最高位,由于最高位可能的最大数我们可以算出,设其为$\mathcal u$,则
最高位已经确定,剩下的只有$\mathcal \lfloor \frac {w}{k} \rfloor$个数字要选,备选的数字有$\mathcal 2^k-1-o \left( 1\le o \le u\right)$个,故此部分答案为
两部分相加即为本题答案。
1 |
|
v1.5.2