tg 76 solution
T1
\(DP,\)设\(f_{i,j}\)表示第\(i\)天拿\(j\)的时候最多钱数
\(j=0\)表示RMB
,\(j=1\)表示BTC
状态转移方程
\(f_{i,0}=max(f_{i-1,0},\{\frac{f_{j,1}}{a_i}\}),j\in[0,n)\)
\(f_{i,1}=max(f_{i-1,1},\{f_{j,0}\cdot a_i\}),j\in[0,n)\)
就是\(j\)这一天啥也不干或者\(j\)这一天换点什么
上述状态转移是\(O(n^2)\)的,但是决策集合单调不降
这个东西一个变量维护最优决策就是线性了
然后关心的是方案,所以到时候把决策记录一下
到时候递归的输出方案即可
注意就是这个题直接乘显然随便爆double
精度
用log
取个对数然后就可以把乘除化成加减,
不影响比较结果,保证精度不炸,常数还小
T2
暴力背包\(30pts\)
正解根号做法
首先我们按性价比排序
首先来个特判:如果有东西比\(1\)的性价比差,那就不用这东西
然后会发现我们讨论的只有性价比\(1\)最后的情况
设性价比最高的是\(a\)其次是\(b\)
发现其实\(a\)最多拿\(\lfloor\frac{n}{a}\rfloor\)次,\(b\)只会拿\(a\)次
然后会发现,这两个必有一个小于\(\sqrt{n}\)
于是看这两个哪个小于\(\sqrt{n}\)就枚举哪个就好了,
另一个肯定尽可能多拿,最后才轮到\(1\)
最后注意从\(0\)开始!
一大车二分三分拿\(80/90pts\)的,我tm就\(30\)
T3
沈老师证明没懂
性质就是所有质因数集合相同的可以互换
然后\(\forall i,j\in prime,\lfloor\frac{n}{i}\rfloor=\lfloor\frac{n}{j}\rfloor\to i,j\)可以互换
于是我们只需要求出
\(1.c_i\)表示\(i\)种质因数组合的个数
\(2.p_i\)表示数论分块意义下每个区间质数个数
它们的阶乘乘一块就行了
link
T4
神仙最小生成树