生成函数的一般应用;

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
const long double PI=acos(-1.0);
struct cp{
long double r,i;
cp(long double _r=,long double _i=):r(_r),i(_i){}
cp operator+(const cp&a){
return cp(r+a.r,i+a.i);
}
cp operator-(const cp&a){
return cp(r-a.r,i-a.i);
}
cp operator*(const cp&a){
return cp(r*a.r-i*a.i,r*a.i+a.r*i);
}
void pu(long double _r=,long double _i=){
r=_r;i=_i;
}
}wn,w,A[][maxn],tmp[maxn],x,y;
int n,dig[maxn],rev[maxn],L;
void fft(cp a[],int flag){
for(int i=;i<n;++i)tmp[i]=a[rev[i]];
for(int i=;i<n;++i)a[i]=tmp[i];
for(int i=;i<=n;i<<=){
cp wn(cos(*PI/i),flag*sin(*PI/i));
for(int k=;k<n;k+=i){
cp w(,);
for(int j=k;j<k+i/;++j){
x=a[j];y=a[j+i/]*w;
a[j]=x+y;a[j+i/]=x-y;
w=w*wn;
}
}
}
if(flag==-)for(int i=;i<n;++i)a[i].r/=n;
}
void solve(cp aa[],cp bb[],int len){
memset(rev,,sizeof(rev));
memset(dig,,sizeof(dig));
for(n=,L=;n<(len<<);n<<=,++L);
for(int i=;i<n;++i){
int ll=;
for(int t=i;t;t>>=)dig[ll++]=t&;
for(int j=;j<L;++j)rev[i]=(rev[i]<<)|dig[j];
}
for(int i=len;i<n;++i)aa[i].pu(),bb[i].pu();
//for(int i=0;i<n;++i)cout<<aa[i].r<<' ';cout<<endl;
fft(aa,);fft(bb,);
for(int i=;i<n;++i)aa[i]=aa[i]*bb[i];
fft(aa,-);
}
bool is[],ex[][];
char ss[];
int main(){
for(long long i=;i<;++i){
if(!is[i]){
for(long long j=i+i;j<;j+=i)is[j]=;
}
}
int a,b,c,op;
while(scanf("%d%d%d",&a,&b,&c)==&&(a||b||c)){
memset(ex,,sizeof(ex));
for(int i=;i<=c;++i){
scanf("%d",&op);scanf("%s",ss);
if(ss[]=='S')ex[][op]=;
else if(ss[]=='H')ex[][op]=;
else if(ss[]=='C')ex[][op]=;
else ex[][op]=;
}
for(int i=;i<;++i)
for(int j=;j<b;++j){
if(is[j]&&ex[i][j]){
A[i][j].pu();
}
else A[i][j].pu();
}
solve(A[],A[],b);
solve(A[],A[],b);
solve(A[],A[],b);
for(int i=a;i<=b;++i){
printf("%lld\n",(long long)(A[][i].r+0.5));
}
cout<<endl;
}
//system("pause");
return ;
}
/*
12 20 2
4S 6H
0 0 0
*/

uva12298(生成函数)的更多相关文章

  1. UVa12298(生成函数的简单应用+FFT)

    I have a set of super poker cards, consisting of an infinite number of cards. For each positive compo ...

  2. [CodeForces - 712D]Memory and Scores (DP 或者 生成函数)

    题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高.  ( ...

  3. HDU 1171 Big Event in HDU --暴力+生成函数

    题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小. 解法:先跑一次生成函数,c[n]表示组成总值为n的方 ...

  4. HDU 2189 悼念512汶川大地震遇难同胞――来生一起走 --生成函数

    这题跟上两题也差不多. 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题.用生 ...

  5. HDU 1085 Holding Bin-Laden Captive --生成函数第一题

    生成函数题. 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少. 解法:写出生成函数: 然后求每项的系数即可. 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8 ...

  6. BZOJ3028 食物 (生成函数)

    首先 1+x+x^2+x^3+...+x^∞=1/(1-x) 对于题目中的几种食物写出生成函数 (对于a*x^b , a表示方案数 x表示食物,b表示该种食物的个数) f(1)=1+x^2+x^4+. ...

  7. C# 条形码 生成函数 (Code 128 标准

    C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某 ...

  8. [原创]oracle 顺序号生成函数。仿Sequence

    问题提出自项目中的老代码:一个Bill表,存储所有的表单信息,比如:员工入职单,离职单等等.(别喷,我知道要分多个表.但领导的意愿你是没办法违背的)表单的单据号是以四个字母+年月日+数字顺序号来表示. ...

  9. FFT与多项式、生成函数题目泛做

    题目1 COGS 很强的乘法问题 高精度乘法用FFT加速 #include <cstdlib> #include <iostream> #include <algorit ...

随机推荐

  1. 11.1JS笔记

    1.js的数据类型分为基本和引用,基本(string.undefined.null.number,boolean),引用(object-->array.function.json等) 2.基本数 ...

  2. Redis单机安装

    安装过程 安装环境 ubuntu14.04 server wget http://download.redis.io/releases/redis-3.2.5.tar.gz tar -xzvf ./r ...

  3. andorid 列表视图 ListView 之ArrayAdapter

    activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...

  4. Linux 双网关(电信与联通)

    经常有这种需求,一台Linux服务器配置电信IP和网通IP,默认情况下,后启动的网卡的网关生效.南电信北网通,配置电信和网通IP,无非是为了减少网络延时,使电信用户的请求响应在电信网络中传输,网通用户 ...

  5. Spring Environment(三)生命周期

    Spring Environment(三)生命周期 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Envi ...

  6. jmeter对需要登录的接口进行性能测测试

    只需要一步: https://www.testwo.com/blog/7253

  7. [ASP.net]web.config的customErrors与httpErrors的区别

    之前一直知道设置web.config(其实就是xml文件)的customErrors的error来指向自定义的错误页的URL,但是今天在调试的时候发现customErrors无法跳转到自定义的页面,在 ...

  8. java ajax请求后台并获取到返回值

    js: $.ajax({ url : '../Islogin.do', type : 'get', cache : false, dataType : 'json', success : functi ...

  9. 69.查看APP沙盒缓存的内容文件

    第一步:链接真机设备,点击Xcode ,按command+shift+2  弹出电脑所运行的APP列表 第二步:选中你需要查看的APP,点击最下面! 类似于设置图标的按钮! 点击第二个Download ...

  10. mysql 表锁进程非常多的情况

    今天要说的是mysql 的 MYISAM引擎下的表锁问题. 通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert ...