F Fireworks
链接
https://ac.nowcoder.com/acm/contest/10272/F
题意
你想要放一个的烟花,你可以花费时间n来制作一个烟花,花费时间m点燃所有的烟花,烟花被点燃以后就释放了,但是他只有$\frac{p}{10^4}$的概率完美释放,你想完美释放至少一个烟花,那么需要的最少时间的期望是多少?
T组输入
数据范围
$T<10^4, n<10^9, m<10^9, p<10^4$
题解
假设准备了k个烟花,然后释放,这个期望值是$\frac{kn+m}{1-(1-\frac{p}{10^4})^k}$ , 这个应该只有一个极值点,也就是最小值,队友用三分过了,当然这个不好证明,其实直接使用模拟退火就可以了。下面提供了三分和模拟退火的算法。
代码
1 |
|
1 |
|
J Just Another Game of Stones
链接
https://ac.nowcoder.com/acm/contest/10272/J
题意
给一个长度为n的序列
操作1: 选择一段区间,把小于等于m的值变为m
操作2: 把这段区间的值取出来,放入一个列表中,向列表中加入一个值m,对列表进行nim博弈,问先手如果赢,他第一步的策略有多少种。
数据范围
$n<2e5,3S, 262MB$
题解
根据博弈论把第二个操作转化为:
问这段区间中有多少个数,他的二进制中第k位是1.
直接按位建立线段树,然后使用吉司机线段树来维护
代码
1 |
|
- 本文作者: fightinggg
- 本文链接: http://fightinggg.github.io/yilia/yilia/QS21N0.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!