生成函数的一般应用;

#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. mongodb导入csv结构化数据

    csv数据样本 "103238704","","-jmyuncker@aol.com-","-r4Vp5iL2VbM=-" ...

  2. jenkins配置slave节点 windows

    1.在slave机器上,访问已安装的jenkins站点,如图,选择新建节点 配置节点 2.打开新建节点,如图,点击launch按钮下载slave-agent.jnlp文件,点击slave.jar下载该 ...

  3. Linux执行命令时遇到的些问题

    1.执行lsb_release -a,提示 未安装lsb_release导致的,执行一下yum install redhat-lsb -y,问题解决 2.配置tomcat站点后重启tomcat,提示找 ...

  4. 利用spring boot构建一个简单的web工程

    1.选择Spring InitiaLizr,    jdk选择好路径 2.设置项目信息 3.这一步是设置选择使用哪些组件,这里我们只需要选择web 4.设置工程名和路径

  5. Pandas基本介绍

    1.pandas主要的两个数据结构:Series和DataFrame Series的字符串表现形式为:索引在左边,值在右边.由于我们没有为数据指定索引.于是会自动创建一个0到N-1(N为长度)的整数型 ...

  6. 洛谷1288 取数游戏II

    原题链接 因为保证有\(0\)权边,所以整个游戏实际上就是两条链. 很容易发现当先手距离\(0\)权边有奇数条边,那么必胜. 策略为:每次都将边上权值取光,逼迫后手向\(0\)权边靠拢.若此时后手不取 ...

  7. 写一个简单的C词法分析器

    写一个简单的C词法分析器 在写本文过程中,我参考了<词法分析器的实现>中的一些内容.这里我们主要讨论写一个C语言的词法分析器. 一.关键字 首先,C语言中关键字有: auto.break. ...

  8. YII配置mysql读写分离

    Mysql 读写分离 YIi 配置 <?php return [ 'class' => 'yii\db\Connection', 'masterConfig' => [ // 'ds ...

  9. mysql8.0.4以后修改密码方式变更

    https://blog.csdn.net/qq_38265784/article/details/80915098 use mysql: ALTER USER 'root'@'localhost' ...

  10. 第一个spring boot 程序

    安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...