bzoj 4909 [Sdoi2017]龙与地下城
题面
https://www.lydsy.com/JudgeOnline/problem.php?id=4909
题解
目前为止仅仅在LOJ上A掉这道题(Loj真快!)
当然不是标准做法
显然我们只要求一个
然后$a^n$的系数就表示选n个的方案数
那么我们找到
然后$a^n$的系数就表示选n个的概率
FFT即可
按理说这东西只能过60分但是LOJ的评测机成功过掉...而且时限4秒最慢一个点只用3秒!!!
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll read(){
ll x=,f=;char c=getchar();
while(c<'' || c>''){if(c=='-')f=-;c=getchar();}
while(c>='' && c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
const int maxn=;
struct Complex{
double re,im;
Complex(){
re=im=;
}
Complex(double alpha){
re=cos(alpha);
im=sin(alpha);
}
Complex(double _re,double _im){
re=_re;
im=_im;
}
Complex operator + (const Complex &x){
return Complex(re+x.re,im+x.im);
}
Complex operator - (const Complex &x){
return Complex(re-x.re,im-x.im);
}
Complex operator * (const Complex &x){
return Complex(re*x.re-im*x.im,re*x.im+im*x.re);
}
Complex operator += (const Complex &x){
return *this=*this+x;
}
Complex operator *= (const Complex &x){
return *this=*this*x;
}
} A[maxn],B[maxn]; int fft_lst,poly_rev[maxn];
inline void fft_init(int n){
if(fft_lst==n) return;
fft_lst=n;
for(int i=,j=n>>;i+<n;i++){
poly_rev[i]=j;
int k=n>>;
while(j>=k){
j-=k;
k>>=;
}
j+=k;
}
} inline void poly_fft(Complex *a,int len,bool f){
fft_init(len);
for(int i=;i+<len;i++)
if(i<poly_rev[i]) swap(a[i],a[poly_rev[i]]);
for(int i=;i<len;i<<=){
Complex off((f ? -acos(-1.0) : acos(-1.0))/i);
for(int j=;j<len;j+=i<<){
Complex cur();
for(int k=j;k<j+i;k++,cur*=off){
Complex x=a[k+i]*cur;
a[k+i]=a[k]-x;
a[k]+=x;
}
}
}
if(f){
for(int i=;i<len;i++)
a[i].re/=len;
}
} int tc; int main(){
#ifdef LZT
freopen("in","r",stdin);
#endif
tc=read();
while(tc--){
int x=read(),y=read();
int mx=x*y,len=;
while(len<mx) len<<=;
for(int i=;i<len;i++)
A[i]=B[i]=Complex();
for(int i=;i<x;i++)
A[i].re=1.0/x;
poly_fft(A,len,false);
for(int i=;i<len;i++){
int nw=y;
B[i]=Complex(,);
while(nw){
if(nw&) B[i]*=A[i];
A[i]*=A[i];
nw>>=;
}
}
poly_fft(B,len,true);
for(int i=;i<len;i++)
B[i].re+=B[i-].re;
for(int i=;i<=;i++){
int l=read(),r=read();
printf("%.8lf\n",B[r].re-(l?B[l-].re:));
}
}
return ;
}
bzoj 4909 [Sdoi2017]龙与地下城的更多相关文章
- BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)
BZOJ 洛谷 https://www.luogu.org/blog/ShadowassIIXVIIIIV/solution-p3779# 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它 ...
- 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
题面 传送门 题解 orz shadowice 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\si ...
- LOJ2267 SDOI2017 龙与地下城 FFT、概率密度函数、Simpson
传送门 概率论神仙题-- 首先一个暴力做法是设\(f_{i,j}\)表示前\(i\)个骰子摇出点数和为\(j\)的概率,不难发现DP的过程是一个多项式快速幂,FFT优化可以做到\(O(XYlog(XY ...
- (WA)BZOJ 4821: [Sdoi2017]相关分析
二次联通门 : BZOJ 4821: [Sdoi2017]相关分析 2017.8.23 Updata 妈妈!!这道题卡我!!!就是不然我过!!!!! #include <cstdio> # ...
- [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)
[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ...
- BZOJ:4820: [Sdoi2017]硬币游戏&&BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...
- BZOJ:4816: [Sdoi2017]数字表格
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 501 Solved: 222[Submit][Status ...
- BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)
BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...
- BZOJ.4821.[SDOI2017]相关分析(线段树)
BZOJ LOJ 洛谷 恶心的拆式子..然后就是要维护\(\sum x_i,\ \sum y_i,\ \sum x_iy_i,\ \sum x_i^2\). 操作三可以看成初始化一遍,然后同操作二. ...
随机推荐
- 从.Net版本演变看String和StringBuilder性能之争
在C#中string关键字的映射实际上指向.NET基类System.String.System.String是一个功能非常强大且用途非常广泛的基类,所以我们在用C#string的时候实际就是在用.NE ...
- Arcgis Engine(ae)接口详解(5):IGeometry几何基础操作
//点操作~~~~~~~~~~~~~~~~~~~~~~~~~ //通过坐标生成点 IPoint point = new PointClass(); point.PutCoords(, ); //获取点 ...
- web 前端冷知识
前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...
- acd - 1427 - Nice Sequence(线段树)
题意:一个由n个数组成的序列(序列元素的范围是[0, n]).求最长前缀 j .使得在这个前缀 j 中对于随意的数 i1 < i2.都满足随意的 m <= j.i1 在前 m 个数里出现的 ...
- nginx搭建支持http和rtmp协议的流媒体server之中的一个
实验目的:让Nginx支持flv和mp4格式文件,支持RTMP协议的直播和点播:同一时候打开RTMP的HLS功能 资料:HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的 ...
- POJ2976 Dropping tests —— 01分数规划 二分法
题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total S ...
- Oracle备份与恢复:冷备份恢复
模拟数据库数据文件丢失的情况下,通过丢失之前的数据文件物理备份做恢复: 说明:数据文件丢失前一刻的所有归档日志都存在. 环境:oracle10g +rhel5 1.关闭数据库,copy system0 ...
- android.annotation.SuppressLint
Lint是一个静态检查器,它围绕Android项目的正确性.安全性.性能.可用性以及可访问性进行分析.它检查的对象包括XML资源.位图.ProGuard配置文件.源文件甚至编译后的字节码. Lint包 ...
- 用JS或jQuery访问页面内的iframe
用JS或jQuery访问页面内的iframe,兼容IE/FF 注意:框架内的页面是不能跨域的!假设有两个页面,在相同域下.index.html 文件内含有一个iframe: <!DOCTYPE ...
- NSArray使用须知
多用firstObject方法 在iOS7之前,我们获取NSArray的第一个元素,通常使用array[0],在iOS7中,新引入了公开的firstObject方法,对于空数组,该方法返回nil,而使 ...