[BZOJ 4332] [JSOI2012]分零食(DP+FFT)】的更多相关文章

[BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\(f(x)=Ox^2+Sx+U\) 现在校长开始分糖果了,一共有M个糖果.有些小朋友可能得不到糖果,对于那些得不到糖果的小朋友来说,欢乐程度就是1.如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果.(即这一列得不到糖果的小朋友一定是最后的连续若干位) 所有分糖果的方案都是等概率的.现在…
4332: JSOI2012 分零食 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 119  Solved: 66 Description 这里是欢乐的进香河,这里是欢乐的幼儿园.  今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同学都安安静静地排好了队,大家都知道,校长不喜欢调皮的孩子.  同学们依次排成了一列,其中有A位小朋友,有三个共同的…
好题好题~ #include <bits/stdc++.h> #define N 50020 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; const double pi=acos(-1.0); struct cpx { double x,y; cpx(double a=0,double b=0){x=a,y=b; } cpx op…
题目: Description 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\(f(x)=O*x^2+S*x+U\) 现在校长开始分糖果了,一共有M个糖果.有些小朋友可能得不到糖果,对于那些得不到糖果的小朋友来说,欢乐程度就是1.如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果.(即这一列得不到糖果的小朋友一定是最后的连续若干位) 所有分糖果的方案都是等概率的.现在问题是:期望情况下,所有小朋友的欢乐程…
https://www.lydsy.com/JudgeOnline/problem.php?id=4332 因为如果一位小朋友得不到糖果,那么在她身后的小朋友们也都得不到糖果. 所以设g[i][j] 表示前i位小朋友,分到j个糖果,且前i位小朋友都分到糖果的方案数 令F(x) 表示分到x个糖果的欢乐程度 ∴g[i][j] = ∑ g[i-1][j-k]*F(k) 记g[i]=g[i-1]*F,则 g[i]=F ^ i 但是要求的是 Σ g[i][m] 记f[n]=Σ g[i]  i∈[1,n]…
描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同学都安安静静地排好了队,大家都知道,校长不喜欢调皮的孩子. 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是f(x)=Ox^2+Sx+U. 现在校长开始分糖果了,一共有M个糖果.有些小朋友可能得不到糖果,对于那些得不到糖果的…
我们构造$f(x)$的生成函数$G(x)$,那么显然$[x^k]G(x)=Ok^2+Sk+U$ 那么显然,答案即为$\sum_{i=1}^{n} [x^m]G^i(x)$ 我们构造答案的生成函数$F(x)=\sum_{i=1}^{n} G^i(x)$ 根据等比数列求和公式,$F(x)=G(x)\dfrac{1-G^{A}(x)}{1-G(x)}$ 如果去等比数列求和的话,你需要多项式快速幂+多项式求逆,时间复杂度显然是$O(m\ log\ m)$的. 然而这个模数并不是质数,所以这么搞不是很好搞…
描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同学都安安静静地排好了队,大家都知道,校长不喜欢调皮的孩子. 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是f(x)=Ox^2+Sx+U. 现在校长开始分糖果了,一共有M个糖果.有些小朋友可能得不到糖果,对于那些得不到糖果的…
题目链接 权限题BZOJ4332 题解 容易想到\(dp\) 设\(g[i][j]\)表示前\(i\)人分到\(j\)颗糖的所有方案的乘积之和 设\(f(x) = Ox^2 + Sx + U\) \[g[i][j] = \sum\limits_{k = 1}^{j - 1}g[i - 1][k]f(j - k)\] 是一个卷积的形式 \[g_n = f^{n}\] 但我们的答案是 \[F_n = \sum\limits_{i = 1}^{n} g_{i,m}\] 有关系 \[F_n = F_x…
一下午被这题的精度续掉了...首先可以找出一个多项式的等比数列的形式,然后类似poj的Matrix Series,不断倍增就可以了.用复数点值表示进行多次的多项式运算会刷刷地炸精度...应当用int存多项式,然后卷积的时候再dft成复数,卷积之后idft回实数.注意两个m次的多项式卷积之后会变成2m次的多项式,多项式的后一半需要清零. #include<cstdio> #include<cstring> #include<cmath> #include<algor…
题意 有\(A\)个人,\(m\)个糖,你可以选择一个\(k\),使第\(1\)$k$个人每个人至少得到一个糖,并且第$k+1$\(A\)个人都得不到糖.\(m\)个糖必须给完.对于每个方案都有一个欢乐值,欢乐值=\(\prod_{i=1}^kOx_i^2+Sx_i+U\),其中\(OSU\)都是给定的系数,\(x_i\)为第\(i\)个人拿到的糖的数量.求所有方案的欢乐值的和. 这题不用NTT啊...... 有个比较naive的\(dp\):设\(f_{i,j}\)表示前\(i\)个人一共拿到…
题目大意:有$m(m\leqslant10^8)$个人站成一排,有$n(n\leqslant10^4)$个糖果,若第$i$个人没有糖果,那么第$i+1$个人也没有糖果.一个人有$x$个糖果会获得快乐值$v(x)$. $$v(x)=\begin{cases}ax^2+bx+c&(x>1)\\1&(x=1)\end{cases}$$一个方案的价值为$\prod\limits_{i=1}^mv(s_i)$($s_i$为第$i$个人得到的糖果数).问所有方案的价值和,对$mod(mod\le…
4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 643  Solved: 391[Submit][Status][Discuss] Description 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细 线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这个饰品只剩下了n?1条细线,但 通过这些细线,这颗小星星还是被串在一起,也就是这…
Bzoj 1131[POI2008]STA-Station (树形DP) 状态: 设\(f[i]\)为以\(i\)为根的深度之和,然后考虑从他父亲转移. 发现儿子的深度及其自己的深度\(-1\) 其余的\(+1\),记录一下\(size\)就ok了 转移: \(f[i] = f[fa] + n - 2 * size[i]\) 记忆化搜索即可. Bzoj 可能过不了,原因貌似是栈空间不足,可以去洛谷提交,我这里的解决方法是.记忆化搜索的时候用\(n\)作为开头.然后就过了. #include <i…
hdu5322 Hope(dp+FFT+分治) hdu 题目大意:n个数的排列,每个数向后面第一个大于它的点连边,排列的权值为每个联通块大小的平方,求所有排列的权值和. 思路: 考虑直接设dp[i]表示n=i时的答案. 我们考虑放完前n-1个数之后再插入n,会发现n前面所有数都和它联通. 于是dp方程就出来了: $dp[n]=\Sigma(dp[n-k]*k^{2}*(k-1)!*C_{n-1}^{k-1})$ 组合数倒腾过来变成: $\frac{dp[n]}{(n-1)!}=\Sigma(\f…
很不错的一道倍增优化dp?? 第一次做这类题挺难想的 题目大意: 有n个小朋友,m块糖. 给小朋友分糖,如果一个小朋友分不到糖,那他后面的小朋友也分不到糖. 每个小朋友有一个喜悦值,有三个参数,O,S,U,设一个小朋友分到糖数为x,则这个小朋友的喜悦值为O*x x+ S x +U,分不到糖的小朋友的喜悦值为1. 求所有分糖方案下 所有小朋友喜悦值乘积 的和. 题目分析: 首先想到 dp .g[i][j]g[i][j] 表示前 ii 个小朋友分到 jj 块糖的所有方案 SS 之和,然后答案是 ∑n…
题面 传送门 思路 首先,这个数据如果没有这么大,我们还是可以做朋友的...... 设$dp\left[i\right]\left[j\right]$代表前j个零食分给了前i个人的方案数 那么dp方程显然: $dp\left[i\right]\left[j\right]=\sum_{k=1}^{j-1} dp\left[i-1\right]\left[k\right]+f\left(j-k\right)$ 其中$f\left(x\right)$就是题目里给的那个二次函数 同时有一个性质: $dp…
 有n个小朋友,m颗糖,你要把所有糖果分给这些小朋友. 规则第 i 个小朋友没有糖果,那么他之后的小朋友都没有糖果..如果一个小朋友分到了 xx 个糖果,那么的他的权值是 f(x) = ox^2 + sx + u 没有分到糖果的小朋友的权值是 1 每种方案的权值是各个小朋友权值的乘积 求出所有方案的权值和   设g(i,j)表示前i个小朋友分j个糖果的权值乘积和 很容易得到一个式子 这个显然是一个卷积用FFT就可以处理 但是问题来了 我们如何得到ans呢 n<=1e8  朴素的算法不太行 要想办…
. 题解: 令$F$为欢乐度$f(x) = Ox^2 + Sx + U$的生成函数,常数项为$0$: 令$G(x) = \sum_{i=0}^{A} F^i (x) $ $ans = [x^M]G;$ 模数比较麻烦所以我用的分治求: 如果现在要求$0$到$n-1$的$G_{n} = \sum_{i=0}^{n-1}F^{i}$和$F_{n} = F^{n} $,假设n为偶数: 那么分治求出关于$n/2$的答案$G_{\frac{n}{2}}$和$F_{\frac{n}{2}}$ $$G_{n}…
思路: 最裸的方程:f[i][j]=Σf[i-1][j-k]*F[k] 诶呦 这不是卷积嘛 f[i]就可以用f[i-1]卷F 求到 但是这样还是很慢 设p[i] 为Σ f[j](1<=j<=i) 发现p可以倍增推 于是  就 倍增一下  就完了... http://www.cnblogs.com/Skyminer/p/6561689.html hz神犇的题解写得非常详细.. //By SiriusRen #include <cmath> #include <cstdio>…
BZOJ 洛谷 http://www.cnblogs.com/LadyLex/p/7326874.html 插头DP.\(m+1\)个插头的状态需要用三进制表示:\(0\)表示无插头,\(1\)表示是左括号插头,\(2\)表示是右括号插头.为了方便用两位的二进制写.所以还需要个哈希表存状态. 转移的时候,对于左边上边这两个插头,如果某个插头为\(0\),很好转移.否则就分\(4\)种情况讨论下.不写了..见上面的链接. 还需要高精度.其它就是些细节了. 转移时特判下边界外有插头就不转移,会方便很…
描述 有一块矩形大蛋糕,长和宽分别是整数w .h.现要将其切成m块小蛋糕,每个小蛋糕都必须是矩形.且长和宽均为整数.切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕.请计算:最后得到的m块小蛋糕中,最大的那块蛋糕的面积下限. 假设w= 4, h= 4, m= 4,则下面的切法可使得其中最大蛋糕块的面积最小. 假设w= 4, h= 4, m= 3,则下面的切法会使得其中最大蛋糕块的面积最小: 输入共有多行,每行表示一个测试案例.每行是三个用空格分开的整数w, h, m ,其中1 ≤ w, h, m…
题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个环构成,这些环的长度和为 n . 因此,就是要求出和为 n 的正整数的最小公倍数的可能情况. 有一个性质:这些正整数中有合数存在的最小公倍数,都可以用全是质数的情况包含. 所以我们只要求出用质数组成的情况就可以了.我们要求的就是,若干个质数,它们的和小于等于 n,它们的最小公倍数情况. 先筛法求出…
dp(x)表示最大面值为x时需要的最少硬币数. 枚举x的质因数p,  dp(x) = min( dp(x/p) - (p-1) * sigma[a[i]/x] ). ---------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm>   using namespac…
树背包, 左儿子右兄弟来表示树, dp(x, y, z)表示结点x, x的子树及x的部分兄弟共建y个伐木场, 离x最近的伐木场是z时的最小代价. 时间复杂度O(N^2*K^2) ------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm>   using namespace s…
n1+n2次一定可以满足..然后假如之前土地集合S1的子集subs1和之后土地集合S2的子集subs2相等的话...那么就少了2个+操作...所以最后答案就是n1+n2-少掉的最多操作数, 由状压dp完成... ------------------------------------------------------------------------ #include<cstdio> #include<cstring> #include<algorithm>   u…
dp(l, r)表示[l, r]这段作为一棵树的最小访问代价. 对于dp(l, r), 我们枚举它的根x, 则dp(l, r) = min(dp(l, x-1)+dp(x+1, r)+C*fx) + K*∑fi (l≤i≤r) ------------------------------------------------------------------------------------ #include<cstdio> #include<cstring> #include&…
WA了一版... 切点确定的话, 顺序是不会影响结果的..所以可以dp dp(i, k) = max(dp(j, k-1) + (sumn - sumi) * (sumi - sumj)) 然后斜率优化就可以了... -------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstr…
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林数 \] 首先你要把这个组合计数肝出来,于是我去翻了一波<组合数学> 用斯特林数容斥原理推导那个式子可以直接出卷积形式,见下一篇,本篇是分治fft做法 组合计数 斯特林数 \(S(n,i)\)表示将n个不同元素划分成i个相同集合非空的方案数 Bell数 \(B(n)=\sum\limits_{i=…
BZOJ 洛谷 \(Description\) 给定一个字符串\(s\),求一个最短的字符串\(t\)满足,将\(t\)拼接多次后,可以得到\(s\).拼接是指,可以将\(t\)放在当前串的任意位置,但要保证对应位置相同.(不太会说,看样例吧...) \(|s|\leq5\times10^5\). \(Solution\) 首先\(t\)既是\(s\)的前缀也是\(s\)的后缀,即\(s\)的\(border\).\(border\)的\(border\)... 考虑\(KMP\)建出\(fai…