很不错的一道倍增优化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. 跨越VLAN

    跨越VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分为多个VLAN,也可以跨越物理网络障碍,将不同于子网中的用户 ...

  2. sql 把多列内容合并

    这个语句不完整.应该是这样:stuff(select ',' + fieldname  from tablename for xml path('')),1,1,'') as ’别名‘这一整句的作用是 ...

  3. Git查看单个文件修改历史

    1 命令 git log --pretty=oneline  文件名 ➜ admin git:(feature/v1.5.0_20181202_group) git log --pretty=onel ...

  4. adb的使用

    前面配置了环境变量,可以在计算机任何位置打开cmd窗口使用adb. 连接android应用 使用connect命令连接盒子的ip(要确保电脑所连接的网络和盒子是一个网络) 抓日志 抓取某一个操作过程的 ...

  5. python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序

    1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...

  6. 经典]Linux内核中ioremap映射的透彻理解【转】

    转自:http://blog.csdn.net/lanyang123456/article/details/7403514 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器.状态寄 ...

  7. Bootstrap3.0学习第二轮(栅格系统原理)

    详情请查看 http://aehyok.com/Blog/Detail/8.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  8. 【转】OpenCV对图片中的RotatedRect进行填充

    函数名:full_rotated_rect 函数参数: image输入图像,rect希望在图像中填充的RotatedRect,color填充的颜色 主要的思路是:先找到RotatedRect的四个顶点 ...

  9. maven项目有红叉,感叹号如何解决?

    红色感叹号,pom.xml文件有红叉 修改了Maven私服服务器的IP地址.可在Maven安装路径下的conf/setting.xml中修改ip地址,具体参照“开发工具”/maven.工程中class ...

  10. nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步

    nagios监控mysql主从同步 起因:nagios可能监控到mysql服务的运行情况,但确不能监控mysql的主从复制是否正常:有时候,同步已经停止,但管理人员却不知道. 登陆mysql从服务器, ...