uva12298(生成函数)
生成函数的一般应用;
#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(生成函数)的更多相关文章
- UVa12298(生成函数的简单应用+FFT)
I have a set of super poker cards, consisting of an infinite number of cards. For each positive compo ...
- [CodeForces - 712D]Memory and Scores (DP 或者 生成函数)
题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高. ( ...
- HDU 1171 Big Event in HDU --暴力+生成函数
题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小. 解法:先跑一次生成函数,c[n]表示组成总值为n的方 ...
- HDU 2189 悼念512汶川大地震遇难同胞――来生一起走 --生成函数
这题跟上两题也差不多. 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题.用生 ...
- HDU 1085 Holding Bin-Laden Captive --生成函数第一题
生成函数题. 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少. 解法:写出生成函数: 然后求每项的系数即可. 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8 ...
- BZOJ3028 食物 (生成函数)
首先 1+x+x^2+x^3+...+x^∞=1/(1-x) 对于题目中的几种食物写出生成函数 (对于a*x^b , a表示方案数 x表示食物,b表示该种食物的个数) f(1)=1+x^2+x^4+. ...
- C# 条形码 生成函数 (Code 128 标准
C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某 ...
- [原创]oracle 顺序号生成函数。仿Sequence
问题提出自项目中的老代码:一个Bill表,存储所有的表单信息,比如:员工入职单,离职单等等.(别喷,我知道要分多个表.但领导的意愿你是没办法违背的)表单的单据号是以四个字母+年月日+数字顺序号来表示. ...
- FFT与多项式、生成函数题目泛做
题目1 COGS 很强的乘法问题 高精度乘法用FFT加速 #include <cstdlib> #include <iostream> #include <algorit ...
随机推荐
- C#中DllImport用法
http://blog.csdn.net/u011981242/article/details/52622923 http://www.jb51.net/article/46384.htm 读取身份证 ...
- log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法
这两天遇到log4net写日志到mysql数据库中,有时候在A项目中可以,有时候B项目就有问题,有时候测试环境没问题,到正式部署环境又出问题,经过两天的煎熬,终于理清楚了其中的头绪. 1.配置现状 c ...
- socket 进阶
1.验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现 import socket import os impor ...
- SqlServer添加触发器不让删除数据
触发器是:instead of delete 类型,注意了:instead类型的触发器相当于: DELETE命令过来后,直接走触发器中的代码,再往下,没有了…… 就是说,这个触发器会屏蔽掉你所有的DE ...
- 向kafka批量发送已存在的txt文件
需要利用kafka发送txt或log文件,有两种方式:1.自己写程序:2.利用kafka自带脚本. 自己写程序: import org.apache.kafka.clients.producer.Ka ...
- poj 1321 (简单DFS) 棋盘问题
题目:http://poj.org/problem?id=1321 最近状态有点down, 练练手 #include<cstdio> using namespace std; ][]; ] ...
- Architecture.SOLID-Principles
SOLID Principles Reference 1. Single Responsibility http://en.wikipedia.org/wiki/Single_responsibili ...
- 零基础照样做RNA-seq差异分析
零基础照样做RNA-seq差异分析 GCBI知识库2018-08-24 14:43:36 基因表达谱的差异分析是RNA-seq中最常见的应用.你眼中的RNA-seq差异分析或许是酱紫的,对不会编程,不 ...
- 高级数据库技术SQL
- Netsharp下微信菜单以及OAuth
一.OAuth介绍 在微信开发中,当打开一个页面是,业务场景一般会基于粉丝绑定用户信息,即页面需要基于粉丝和用户的身份处理业务逻辑. 在微信中打开一个页面有三个场景: 1.文本回复中直接包含url 2 ...