【二分法】 HDU 2446 Shell Pyramid】的更多相关文章

意甲冠军:非常多,形成一个金字塔球 文章x层 x*(x+1)/ 2 球 给你个S 金字塔的一层代表第一数字向下S球 它是其中  这层中的第几行 第几列 公式 1 : x*(x+1)*(x+2)/ 6 公式 2 :x*(x+1)/ 2 公式1为公式2 的前n项和 #include <cstdio> #include <cstring> #include <cstdlib> #include <string> #include <iostream>…
hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治fft 注意过程中把r-l+1当做次数界就可以了,因为其中一个向量是[l,mid],我们只需要[mid+1,r]的结果. 多项式求逆 变成了 \[ A(x) = \frac{f_0}{1-B(x)} \] 的形式 要用拆系数fft,直接把之前的代码复制上就可以啦 #include <iostream…
HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮非常简单.它就像一个铁缸,其后端密封,前端打开.它的后端有一个小孔,用来安装保险丝.战舰上的大炮被放在有四个轮子的小型车辆上,炮弹是铁球,里面装着火药. 当时,据说有一位聪明的船长,他也是一位数学家的业余爱好者.他喜欢把他遇到的所有东西都连接到数学上.在每次战斗之前,他经常命令士兵将炮弹放在甲板上并…
[来源]:2008年哈尔滨区域赛 [题目链接]: http://acm.hdu.edu.cn/showproblem.php?pid=2446 [题意] 题目是真的长呀,其实就问一个问题. 按照图里面的方法,请问第i个在第几堆,第几行,第几列. 例如,第19个在哪里呢? 在第4堆,第4行,第3列. [题解] 利用二分快速找到第几堆,同样道理,找到第几行也一样. 这个题目关键在于公式推导. 前i堆有多少个 S(n)= Σ ( n+1)* n / 2 ) 没有公式插入真的很麻烦呀... #inclu…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5730 [题目大意] 给出一个数组w,表示不同长度的字段的权值,比如w[3]=5表示如果字段长度为3,则其权值为5,现在有长度为n的字段,求通过不同拆分得到的字段权值乘积和. [题解] 记DP[i]表示长度为i时候的答案,DP[i]=sum_{j=0}^{i-1}DP[j]w[i-j],发现是一个卷积的式子,因此运算过程可以用FFT优化,但是由于在计算过程中DP[j]是未知值,顺次计算复杂度是O(…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 可以用分治FFT.但自己只写了多项式求逆. 和COGS2259几乎很像.设A(x),指数是长度,系数是方案. \( A(x)^{k} \) 的 m 次项系数表示 k 个连续段组成长度为 m 的序列的方案数. \( B(x)=1+F(x)+F^{2}(x)+F^{3}(x)+... \) \( B(x) = \frac{1}{1-F(x)} \)(通过计算B(x)的逆来看出这个式子) 然后多项式求逆…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 DP式:\( f[i] = \sum\limits_{j=1}^{i} f[i-j] * a[j] \) 因为没有给 \( f[0] \) 赋初值,所以在递归底层令 \( f[l] += a[l] \) 注意多组数据清空数组: 读入 \( s[i] \) 时要取模!! 代码如下: #include<iostream> #include<cstdio> #include<cstr…
题意:一段长为 i 的项链有 a[i] 种装饰方式,问长度为n的相连共有多少种装饰方式 分析:采用dp做法,dp[i]=∑dp[j]*a[i-j]+a[i],(1<=j<=i-1) 然后对于这种递推式,也就是dp[i]等于前j个dp数组和a数组的卷积,然后可看所有的 一看n是1e5,所以暴力超时,然后采用cdq分治加速,这种卷积递推通常采用cdq分治加速 cdq的话很简单了,就是先递归左边,算左对右的贡献,递归右边就行,一半一半更新 #include <cstdio> #inclu…
题意: 给出连续的1-n个珠子的涂色方法 a[i](1<=i<=n), 问长度为n的珠链共有多少种涂色方案 分析: 可以得到DP方程: DP[n] = ∑(i=1,n) (DP[n-i]*a[i]). 该方程为卷积形式,故 CDQ + FFT CDQ: 将 [l,r] 二分, 先得到[l,mid]的答案,再更新[l,mid]对[mid+1,r]的贡献.   对任意 DP[j](mid+1 <= j <= r), [l,mid] 对其贡献为 ∑(i=l,mid) (DP[i]*a[j…
题目链接 dp[n] = sigma(a[i]*dp[n-i]), 给出a1.....an, 求dp[n]. n为1e5. 这个式子的形式显然是一个卷积, 所以可以用fft来优化一下, 但是这样也是会超时的. 所以可以用cdq分治来优化. cdq分治就是处理(l, mid)的时候, 将dp[l]...dp[mid]对dp[mid+1]...dp[r]做的贡献都算出来. #include <bits/stdc++.h> using namespace std; #define pb(x) pus…