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 ...
随机推荐
- pycharm 出现Process finished with exit code 0 或 Process finished with exit code -1
Process finished with exit code 0 意味着你的程序正常执行完毕并退出. 可以科普一下exit code,在大部分编程语言中都适用: exit code 0 表示程序执行 ...
- Debian 中文环境设置
编辑 /etc/apt/sources.list 添加163镜像源 apt-get update 进行更新 dpkg-reconfigure locales 选择 en_US.utf-8 utf-8 ...
- c# 24种设计模式4建造者模式(Builder)
先来一个例子 建造者接口 public interface IBuilder { void CreateLogo(); void CreateBody(); void CreateWheel(); v ...
- javascript 高级程序设计 七
引言:好几天没有写随笔了,项目有点紧,恰好今天项目遇到了比较大阻塞,就只好来写一篇随笔来压压惊. 1.Date类型 创建一个新的Date:(除了new Date()外) var someDate = ...
- VirtualBox安装android-x86-4.4-r2
https://jingyan.baidu.com/album/a681b0de1373133b184346cf.html?picindex=10
- Linux vps服务器国产面板wdcp的安装和使用方法
对于大多数站长来说,稳定的服务器不可或缺,这是我做网站以来的深刻体会,因为之前我在网站运营方面因这个原因吃了很多亏.在这里说出,只希望朋友们不要像我一样.在网站优化过程中,服务器因素导致排名下滑,甚至 ...
- Loadrunner 脚本录制策略
Loadrunner在脚本录制过程中,我们会先后分别碰见init.action.transaction.end.block等概念.本次打算以图文并茂的形式为大家分别讲解. 以下为一个简要的网站操作逻辑 ...
- Vsphere初试——架设Panabit行为管理
Panabit是目前国内X86平台单板处理能力最高(双向40G).提供免费版本(软件形态),是以DPI为核心优势并发展起来的最专业.上线效果最好.性价比最高的新一代应用网关.Panabit流控引擎,基 ...
- 标准IO缓冲机制
参考资料: https://q16964777.iteye.com/blog/2228244 知道缓冲有几种模式:无缓冲.行缓冲.全缓冲.通过判断FILTE中的 _flags 的判断可以知道究竟是那种 ...
- APICloud开发
2018-06-16 今天在看房角石APPIOS版本闪退的问题,后来定位到了 elements.find("video").attr("preload", &q ...