很不错的一道倍增优化dp??

第一次做这类题挺难想的

题目大意:

有n个小朋友,m块糖。 
给小朋友分糖,如果一个小朋友分不到糖,那他后面的小朋友也分不到糖。 
每个小朋友有一个喜悦值,有三个参数,O,S,U,设一个小朋友分到糖数为x,则这个小朋友的喜悦值为O*x x+ S x +U,分不到糖的小朋友的喜悦值为1。 
求所有分糖方案下 所有小朋友喜悦值乘积 的和。

题目分析:

首先想到 dp 。g[i][j]g[i][j] 表示前 ii 个小朋友分到 jj 块糖的所有方案 SS 之和,然后答案是 ∑ni=1g[i][m]∑i=1ng[i][m]。 
dp方程

 
g[n][m]=∑i=1mg[n−1][i]×f(m−i)g[n][m]=∑i=1mg[n−1][i]×f(m−i)

(枚举第 nn 个小朋友分到的糖数)。 
然后发现是个卷积的形式,于是立刻想到 FFT ,立刻想到倍增 (

 
g[n]=g[n−1]∗fg[n]=g[n−1]∗f

得到

 
g[n]=g[0]∗fng[n]=g[0]∗fn

,而 g[0]=1g[0]=1 所以

 
g[n]=fng[n]=fn

)。但是我们显然要求的是

 
∑i=1ng[i][m]∑i=1ng[i][m]

只是这样倍增显然是不行的。

于是记

 
F[n]=∑i=1ng[i]F[n]=∑i=1ng[i]

则 F[n][m]F[n][m] 即为答案。 
我们还是可以用倍增的方式求 F[n]F[n] (以下设 nn 为 22 的倍数)。

 
F[n]=∑i=1ng[i]F[n]=∑i=1ng[i]
 
F[n]=F[n2]+∑i=n2+1ng[i]F[n]=F[n2]+∑i=n2+1ng[i]
 
F[n]=F[n2]+∑i=n2+1nfiF[n]=F[n2]+∑i=n2+1nfi
 
F[n]=F[n2]+∑i=1n2fi+n2F[n]=F[n2]+∑i=1n2fi+n2
 
F[n]=F[n2]+fn2∑i=1n2fiF[n]=F[n2]+fn2∑i=1n2fi
 
F[n]=F[n2]+g[n2]∗F[n2]F[n]=F[n2]+g[n2]∗F[n2]

完成!

对于 n mod 2=1n mod 2=1 的情况,可以从 F[n−1]F[n−1] 来计算 F[n]F[n]。可以证明,迭代次数是 log2nlog2n 级别的。 
于是就可以开心的使用倍增完成,取膜可以在求完卷积时膜。

复杂度 O(nlog2nlog2m)

FFT 【JSOI2012】bzoj4332 分零食 (未解决)的更多相关文章

  1. [JSOI2012][bzoj4332] 分零食 [FFT]

    题面 传送门 思路 首先,这个数据如果没有这么大,我们还是可以做朋友的...... 设$dp\left[i\right]\left[j\right]$代表前j个零食分给了前i个人的方案数 那么dp方程 ...

  2. 【bzoj4332】【JSOI2012】 分零食 生成函数 FFT

    我们构造$f(x)$的生成函数$G(x)$,那么显然$[x^k]G(x)=Ok^2+Sk+U$ 那么显然,答案即为$\sum_{i=1}^{n} [x^m]G^i(x)$ 我们构造答案的生成函数$F( ...

  3. LGP5075【JSOI2012】分零食

    . 题解: 令$F$为欢乐度$f(x) = Ox^2 + Sx + U$的生成函数,常数项为$0$: 令$G(x) = \sum_{i=0}^{A} F^i (x) $ $ans = [x^M]G;$ ...

  4. 【BZOJ 4332】 4332: JSOI2012 分零食 (FFT+快速幂)

    4332: JSOI2012 分零食 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 119  Solved: 66 Description 这里是欢乐 ...

  5. [BZOJ 4332] [JSOI2012]分零食(DP+FFT)

    [BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\ ...

  6. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...

  7. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

  8. 记一次未解决的异常:java.lang.NoClassDefFoundError: net/sf/json/JSONObject

    原因:Jetty会导致这个问题,Tomcat可以正常启动   一.异常产生现象 使用json-lib转换实体类/字符串,跑单元测试没问题,但是启动jetty后调用JSONArray.fromObjec ...

  9. Ajax返回中文乱码问题(未解决)

    (未解决) 暂时使用办法:改用返回Map<String,String>形式的返回值,在ajax中获取json形式的数据.

随机推荐

  1. js_倒计时去执行函数或则跳转页面

    js_倒计时去执行函数或则跳转页面: var wait = 5; $(document).ready(function () { returnPage(); }); function returnPa ...

  2. 配置Arcengine10.1+java开发环境(Eclipse)

    以下开发环境配置是假定用户已经安装了Java开发的IDE(Eclipse) 软件准备 (一)ArcEngine 10.1 安装包 提取码:poa0 (二)ArcGIS License Manager ...

  3. android AsyncHttpClient使用

    1.www.github.com下载jar包 loopj/android-async-http 将下载好的文件导入项目中 2.main.xml <?xml version="1.0&q ...

  4. logback配置按天产生日志文件

    1 依赖Jar包 pom配置 也可以根据自己的版本来 <dependency> <groupId>org.slf4j</groupId> <artifactI ...

  5. C++ vector 使用笔记

    map 插入 vector #include <string> #include <iostream> #include <algorithm> #include ...

  6. python - 自定制property/property的延时计算

    自定制prooerty: #模拟@property 实现将类的函数属性变成类属性: #定义描述符 class msf(): def __init__(self,obj): self.obj = obj ...

  7. Android 中查看内存的使用情况集常用adb命令

    http://blog.csdn.net/bigconvience/article/details/35553983 http://blog.csdn.net/duantihi/article/det ...

  8. Kali2.0更新

    下载链接:猛戳这里 更新以后速度与界面友好性提高了! 界面仿造了ubuntu和fedora,应用也有很多小图标!这个对个人来说比较赞 安装以后的几件事 1.安装vmtools,方法跟1.0一样! ta ...

  9. JS实现随机背景图片与图片大小变换的效果

    经常在网上见一些网站访问一次背景图片改变一次,而且图片的大小不停变换,于是想着自己研究一下. 背景图片可以通过JS的随机数来改变图片的src来实现随机图片,图片的大小变换可以用JS的setInterv ...

  10. 在Spring(4.3.22)中集成Hibernate(5.4.0)

    (1)pom中添加相关依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibe ...