【LOJ】#2127. 「HAOI2015」按位或
题解
听说这是一道论文题orz
\(\sum_{k = 1}^{\infty} k(p^{k} - p^{k - 1})\)
答案是这个多项式的第\(2^N - 1\)项的系数
我们反演一下,卷积变点积
\(\hat{f_{S}} = \sum_{k = 1}^{\infty} k(\hat{p_{S}}^{k} - \hat{p_{S}}^{k - 1})\)
这是个等比数列啊,怎么推呢= =
设答案为\(S\),如果我在相邻的两项之间
例如\(2(\hat{p_{S}}^{2} - \hat{p_{S}}^{1})\)
\((\hat{p_{S}}^{1} - \hat{p_{S}}^{0})\)每项多加一个\(\hat{p_{S}}^{k}\)再减去
最后会有一个\(\infty \hat{p}^{\infty} - \hat{p_{S}}^{0}\)
所以
\(S = \infty \hat{p}^{\infty} - \sum_{k = 0}^{\infty} \hat{p}^{k}\)
\(\hat{p}S = \infty \hat{p}^{\infty} - \sum_{k = 1}^{\infty} \hat{p}^{k}\)
上式减下式
\((1 - \hat{p})S = -1\)
\(S = - \frac{1}{1 - \hat{p}}\)
所以就有
\(\hat{f} = \left\{\begin{matrix}
-\frac{1}{1 - \hat{p}} & \hat{p} < 1\\
0 & \hat{p} = 1
\end{matrix}\right.\)
最后把F反演回去就行
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <ctime>
#include <vector>
//#define ivorysi
#define MAXN 2000005
#define eps 1e-8
#define mo 974711
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
const int64 MOD = 998244353;
int N,L;
db P[MAXN],F[MAXN];
bool dcmp(db a,db b) {
return fabs(a - b) < eps;
}
template <class T>
void FMT(T *a,T ty) {
for(int i = 1 ; i < L ; i <<= 1) {
for(int j = 0 ; j < L ; ++j) {
if(j & i) {
a[j] = a[j] + ty * a[j ^ i];
}
}
}
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
scanf("%d",&N);
L = 1 << N;
for(int i = 0 ; i < L ; ++i) scanf("%lf",&P[i]);
FMT(P,1.0);
for(int i = 0 ; i < L ; ++i) {
if(dcmp(1.0,P[i])) F[i] = 0;
else F[i] = -1/(1 - P[i]);
}
FMT(F,-1.0);
if(dcmp(F[L - 1],0)) puts("INF");
else printf("%.6lf\n",F[L - 1]);
return 0;
}
【LOJ】#2127. 「HAOI2015」按位或的更多相关文章
- LOJ#2127「HAOI2015」按位或
用$ Min-Max$容斥之后要推的东西少了好多 无耻的用实数快读抢了BZOJ.Luogu.LOJ三个$ OJ$的Rank 1 即将update:被STO TXC OTZ超了QAQ 题意:集合$ [0 ...
- loj#2128. 「HAOI2015」数字串拆分 矩阵乘法
目录 题目链接 题解 代码 题目链接 loj#2128. 「HAOI2015」数字串拆分 题解 \(f(s)\)对于\(f(i) = \sum_{j = i - m}^{i - 1}f(j)\) 这个 ...
- 「HAOI2015」按位或
「HAOI2015」按位或 解题思路 : 这类期望题一眼 \(\text{Min-Max}\) 容斥,只需要稍微推一下如何求 \(E(minS)\) 即可. \[ E(minS) = \frac{1} ...
- 【LOJ2127】「HAOI2015」按位或
题意 刚开始你有一个数字 \(0\),每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或操作.选择数字 \(i\) 的概率是 \(p[i]\) . 问期望多少秒后,你手 ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
- Loj #3089. 「BJOI2019」奥术神杖
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...
- Loj #2542. 「PKUWC2018」随机游走
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...
随机推荐
- java web实现计划定时任务
java web实现定时计划任务 1.定义一个类继承TimerTask,在run方法中写上需要执行的逻辑 package com.mytask; import java.util.TimerTask; ...
- python---重点(设计模式)
前戏:设计模式简介 设计模式是面向对象设计的解决方案,是复用性程序设计的经验总结.(与语言无关,任何语言都可以实现设计模式) 设计模式根据使用目的的不同而分为创建型模式(Creational Patt ...
- linux split 切割大文件
语法: split [-l <行数>] [-b <字节>] [-C <字节>] [要切割的目标文件] [输出文件名前缀] 说明: -l <行数> 指定 ...
- python 9*9 乘法表
row = 1 while row <= 9: col = 1 while col <= row: print('%d*%d=%d'%(col, row, row*col), end='\ ...
- soj1763.传球游戏
题目不算很难,dp的转移方程也很容易列出: 设dp[i][j] 代表第i次传球之后球回到j手中的传球数.易得: dp[i][j] = dp[i-1][j-1] + dp[i-1][j-1] 再处理一下 ...
- ASP.NET根据IP获取省市地址
1.在网站的跟路径下面添加 QQWry.dat 文件,这个文件是IP数据库文件 2.添加以下一个类 IPScanner C# 代码 复制 public class IPScanner { ...
- ETL测试基本知识
转载自: https://www.cnblogs.com/clarke157/p/6383024.html 一.ETL测试的重要性: ETL(Extract-Transform-Load的缩写,即数据 ...
- Python Dict用法
Operation Result len(a) the number of items in a 得到字典中元素的个数 a[k] the item of a with key k 取得键K所对应的值 ...
- 微信小程序实战--开发一个简单的快递单号查询
功能如图: 虽然工作中只负责小程序后台开发,但是还是小程序开发产生了浓厚的兴趣,官方文档也是超级详细了 这里就简单做一个快递单号的查询: 新建一个page: 接着就可以写wxml了.这里用一个简单的i ...
- 在c++中实现反射的初步想法
最近在思考如何在c++中实现反射.事情的起因是这样的:我们服务器是用c++开发的,如果需要写一些测试用的GM指令的话,需要编写完GM代码后重新编译并且重启进程,工序繁琐且比较耗时.因此就有了想用脚本( ...