Bzoj3652 大新闻
Time Limit: 10 Sec Memory Limit: 512 MBSec Special Judge
Submit: 215 Solved: 112
Description

Input

Output

Sample Input
Sample Output
HINT

1<=N<=10^18
Source
加密和不加密各自是独立问题
后者是炒鸡麻烦的数位DP
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;
const int mxn=;
LL n;
LL b[];
double p;
int len;
double pw(){//加密
double res=;
for(int i=;i<len;i++){
double L=(n/(1LL<<(i+)))*(double)(1LL<<i);
//高位取遍所有情况,当前位为0,低位无限制
double R=(max(0LL,n%(1LL<<(i+))-(1LL<<i)));
//高位为极限,当前位为1,低位不超限
L=(L+R)/n;
res+=L*(-L)**(1LL<<i);
//取对立情况使得该位异或和为1的期望*贡献 x,y交换是另一种情况,所以*2
}
return res;
}
double f[];
double npw(){//未加密
n--;//右侧开区间
double res=;
if(n&)f[]=;else f[]=;
f[]/=(n+);
LL m=n;
int i,j;
for(i=;i<len-;i++){
if((n>>i)&)f[i]=f[i-]+(double)b[i]/(n+)*b[i]*+(double)(b[i]-)*1.0/(n+)*b[i];
else f[i]=f[i-]*+(b[i])/(double)(n+)*(b[i]);
}
for(int i=len-;i>=;i--){
if((n>>i)&){//x可以取1
if((m>>i)&){//y可以取1
res+=(b[i+]-)*(double)(m+-(b[i]))/(n+);
m=(b[i])-;
}
res+=b[i]*(double)(m+)/(n+);
}
else{
if((m>>i)&){
res+=(b[i])*(double)(m+-(b[i]))/(n+);
m^=(b[i]);
res+=i->=?f[i-]:;
}
}
}
n++;
return res;
}
int main(){
int i,j;
scanf("%lld%lf",&n,&p);
len=;
while((1LL<<len)<=n)++len;
for(i=;i<=len;i++)b[i]=1LL<<i;
printf("%.8f\n",npw()*p+pw()*(-p));
return ;
}
Bzoj3652 大新闻的更多相关文章
- 大新闻!HoloLens即将入华商用
昨天微软搞了大新闻,Terry和Alexi到了深圳,在WinHEC大会上宣布了2017上半年HoloLens正式入华商用. 关于HoloLens的技术原理和细节官方文档和报道已经披露很多了,他是一款真 ...
- [BZOJ 3652]大新闻
[BZOJ 3652] 大新闻 题意 随机从 \([0,n)\) 中选取一个整数 \(x\), 并从 \([0,n)\) 中再选取一个整数 \(y\). 有 \(p\) 的概率选取一个能令 \(x\o ...
- LG3898 [湖南集训]大新闻
题意 题目描述 **记者弄了个大新闻,这个新闻是一个在 [0,n) 内等概率随机选择的整数,记其为 x.为了尽可能消除这个大新闻对公众造成的不良印象,我们需要在 [0,n)内找到某一个整数 y,使得 ...
- 【python】10分钟教你用python一行代码搞点大新闻
准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...
- [CSP-S模拟测试]:大新闻(主席树)
题目传送门(内部题20) 输入格式 第一行为两个数$n,m$,意义如题所述.接下来一行$n$个数,代表一开始$n$条大新闻的$naive$值.接下来$m$行,每行一个操作,输入格式如下:读入$1$,代 ...
- 几年前的今天,Google发了这几篇“大”新闻
免责声明: 因阅读本文所导致的任何时间或经济上的损失,皆由您自行承担,本小编概不负责. 估计今天我的朋友圈会被"震惊!"刷屏,来看看 Google 做过哪些令人"震惊&q ...
- BZOJ 3652: 大新闻(数位DP+概率论)
不得不说数位DP和博弈论根本不熟啊QAQ,首先这道题嘛~~~可以分成两个子问题: 有加密:直接算出0~n中二进制每一位为0或为1分别有多少个,然后分位累加求和就行了= = 无加密:分别算出0~n中二进 ...
- 【BZOJ 3652】大新闻 数位dp+期望概率dp
并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的 ...
- 【20151105noip膜你赛】bzoj3652 bzoj3653
题目仿佛在讽刺我... 第一题: 题解: 考虑枚举区间右端点,维护所以左到当前的 and 和 or .注意 and 每次变化至少有一个二进制位从1变 0,or 每次至少有一个位从0变 1,所以最多有l ...
随机推荐
- [牛客OI测试赛2]F假的数学游戏(斯特灵公式)
题意 输入一个整数X,求一个整数N,使得N!恰好大于$X^X$. Sol 考试的时候只会$O(n)$求$N!$的前缀和啊. 不过最后的结论挺好玩的 $n! \approx \sqrt{2 \pi n} ...
- 基础篇(2):c++顺序结构程序设计
一个程序最基本的结构莫过于3种:顺序,选择,循环.这篇讲讲顺序结构. c++语言的运算符与表达式数量之多,在高级语言中是少见的,也使得它的语言功能十分完善. c++的运算符有单目与双目之分(作用于一个 ...
- 【组合数学】cf660E. Different Subsets For All Tuples
比较套路的组合数学题 For a sequence a of n integers between 1 and m, inclusive, denote f(a) as the number of d ...
- 3- vue django restful framework 打造生鲜超市 - model设计和资源导入
3- vue django restful framework 打造生鲜超市 - model设计和资源导入 使用Python3.6与Django2.0.2(Django-rest-framework) ...
- phpstrom怎样显示类的方法或函数列表
phpstorm是能显示类的函数或方法列表的. 打开phpstorm,鼠标放到编辑器的右下角(矩形加一个下划线,跟电视机的图标差不多),不用点击就能显示出来一个弹窗: 让后点击Structure,就出 ...
- BFS:HDU2612-Find a way(双向BFS)
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Cakephp在Controller中显示sql语句
Cakephp在Controller中查询语句一般是: $this->Model->find(); 那么这条语句对应的sql语句是什么呢? 可以通过下面方法显示: 1. $dbo = Co ...
- Thread和Runnable的子类调用
实现线程的两种方式: 继承Thread类. 实现Runnable接口. 下面是一个小案例: public class Thread和Runnable { public static void main ...
- AD管理中心
(一).安装 Active Directory 管理中心 引用位置: http://technet.microsoft.com/zh-cn/library/dd560652(WS.10).aspx ( ...
- C#开发微信公众平台教程
http://www.cnblogs.com/xishuai/p/3625859.html http://www.cnblogs.com/wuhuacong/p/3614175.html http:/ ...