上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 30 下一页
摘要: 先算出lcm(a,b),如果lcm>=n,则直接暴力解决;否则分段,求出0-lcm内的+0-n%lcm内的值。再就是连续相同的一起计算!! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define ll __int6410 using namespace std;11 ll gcd(ll a,ll b){12 ll t;13 if(an) temp=n-i; //如果i+temp>n 则后面最多只有n-i个数了31 ans +... 阅读全文
posted @ 2013-07-26 16:10 _随心所欲_ 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 解题报告:记录 A_i 为长度为 i 的树枝的数量,并让 A 对它本身做 FFT,得到任意选两个树枝能得到的各个和的数量。枚举第三边,计算出所有两边之和大于第三条边的方案数,并把前两条边包含最长边的情况减掉就是答案。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0) 10 using namespace std; 11 const int MAX = 400002; 12 //复数结构... 阅读全文
posted @ 2013-07-26 14:56 _随心所欲_ 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 此处介绍另一种方法来解决这题,也就是FFT(快速傅里叶变换)如果是乘法,位数为n和位数为m的相乘,需要n*m次的乘法运算。FFT在数字信号处理学过,但是第一次用来做这类题目,神奇啊。乘法其实就是做线性卷积。用DFT得方法可以求循环卷积,但是当循环卷积长度L≥N+M-1,就可以做线性卷积了。使用FFT将两个数列转换成傅里叶域,在这的乘积就是时域的卷积。给几个学习的链接吧:http://wenku.baidu.com/view/8bfb0bd476a20029bd642d85.html (这主要看那个FFT的流程图)http://wlsyzx.yzu.edu.cn/kcwz/szxhcl/kech 阅读全文
posted @ 2013-07-26 12:24 _随心所欲_ 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 指数型母函数应用!!!import java.math.*; import java.util.*;public class Main { public static int []a; public static void main(String arg[]){ BigInteger [] p =new BigInteger[313]; p[1]=BigInteger.ONE; int i; for(i=2;i<=312;i++){ p[i] = p[i-1].multiply(BigInteger.valueOf(i)); } Scanner cin = new Scanner... 阅读全文
posted @ 2013-07-25 17:06 _随心所欲_ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 指数型母函数的应用求A B C D 在规定条件下n个元素的排列个数,先写出指数型母函数 G(X) = ( 1 + x + x^2/2! + x^3/3! +... )^2 * ( 1+ x^2/2! + x^4/! + .. )^2 前者表示:B, D出现方式不限制;后者表示:A, C 只能出现偶数或者不出现情况 又知: e^x=1+x/1!+x^2/2!+x^3/3!+... e^(-x)=1-x/1!+x^2/2!-x^3/3!+... 化简得: G(x) = e^(2x) * ((e^x+e^(-x))/2)^2 = (1/4) * e^(2x) * (e^(2x) + 2 + e^(. 阅读全文
posted @ 2013-07-25 14:52 _随心所欲_ 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 简单的指数型母函数!!!#include#include#include#include#include#include#include#includeusing namespace std;double a[1001],b[1001],p[1002],s[110];void init(){ s[0]=s[1]=1; for (int i=2; i>p[i]; } memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=0;i<=p[1];i++) a[i]=1.0/s[i]; for(i=2;i<=n;i++){ for(j= 阅读全文
posted @ 2013-07-25 12:17 _随心所欲_ 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 母函数的特殊情况,左右两边都可以放,如样例1,2,9母函数为(1+x+1/x)*(1+x^2+1/x^2)*(1+x^9+1/x^9)化简为(1+x+x^2)*(1+x^2+x^4)*(1+x^9+x^18)/(x*x^2*x^9)这样就好计算了,看代码:#include#include#include#include#include#include#include#includeusing namespace std;__int64 a[30001],b[30001],an[10001];int main(){ int i,j,k,n,sum,num; while (cin>>n 阅读全文
posted @ 2013-07-25 10:41 _随心所欲_ 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 最近学习容斥原理,实现容斥原理大致有三种方法:dfs,队列数组,二进制。今天主要讲下二进制实现容斥原理: 有一个集合{A1……An},求集合的子集?很显然答案为也就是2^n个,也就是每一个子集有唯一标志符 i (0 2 #include 3 #include 4 #include 5 #includ... 阅读全文
posted @ 2013-07-24 21:57 _随心所欲_ 阅读(1735) 评论(2) 推荐(1) 编辑
摘要: 水题,注意不要去掉前导0……#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;char an[100005];int m;int fun(){ int sum=0,i; for(i=0;i9) { t=(an[i]-'0')/10; an[i]=(an[i]-'0')%10+'0'; } else t=0; } if(t!=0) an[m++]=t+'0' 阅读全文
posted @ 2013-07-24 18:59 _随心所欲_ 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 这题主要是推公式……#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;ll mod=1000000007;ll pows(ll a,ll b){ ll ans=1; while(b) { if(b&1) ans=(ans*a)%mod; b>>=1; a=(a*a)%mod; } return ans;}int main(){ int t; ll ans,n,k,m; cin>>t; 阅读全文
posted @ 2013-07-24 18:58 _随心所欲_ 阅读(148) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 30 下一页