Time Limit: 10 Sec  Memory Limit: 512 MBSec  Special Judge
Submit: 215  Solved: 112

Description

Input

Output

Sample Input

3 0.5

Sample Output

2.000000

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 大新闻的更多相关文章

  1. 大新闻!HoloLens即将入华商用

    昨天微软搞了大新闻,Terry和Alexi到了深圳,在WinHEC大会上宣布了2017上半年HoloLens正式入华商用. 关于HoloLens的技术原理和细节官方文档和报道已经披露很多了,他是一款真 ...

  2. [BZOJ 3652]大新闻

    [BZOJ 3652] 大新闻 题意 随机从 \([0,n)\) 中选取一个整数 \(x\), 并从 \([0,n)\) 中再选取一个整数 \(y\). 有 \(p\) 的概率选取一个能令 \(x\o ...

  3. LG3898 [湖南集训]大新闻

    题意 题目描述 **记者弄了个大新闻,这个新闻是一个在 [0,n) 内等概率随机选择的整数,记其为 x.为了尽可能消除这个大新闻对公众造成的不良印象,我们需要在 [0,n)内找到某一个整数 y,使得 ...

  4. 【python】10分钟教你用python一行代码搞点大新闻

    准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...

  5. [CSP-S模拟测试]:大新闻(主席树)

    题目传送门(内部题20) 输入格式 第一行为两个数$n,m$,意义如题所述.接下来一行$n$个数,代表一开始$n$条大新闻的$naive$值.接下来$m$行,每行一个操作,输入格式如下:读入$1$,代 ...

  6. 几年前的今天,Google发了这几篇“大”新闻

    免责声明: 因阅读本文所导致的任何时间或经济上的损失,皆由您自行承担,本小编概不负责. 估计今天我的朋友圈会被"震惊!"刷屏,来看看 Google 做过哪些令人"震惊&q ...

  7. BZOJ 3652: 大新闻(数位DP+概率论)

    不得不说数位DP和博弈论根本不熟啊QAQ,首先这道题嘛~~~可以分成两个子问题: 有加密:直接算出0~n中二进制每一位为0或为1分别有多少个,然后分位累加求和就行了= = 无加密:分别算出0~n中二进 ...

  8. 【BZOJ 3652】大新闻 数位dp+期望概率dp

    并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的 ...

  9. 【20151105noip膜你赛】bzoj3652 bzoj3653

    题目仿佛在讽刺我... 第一题: 题解: 考虑枚举区间右端点,维护所以左到当前的 and 和 or .注意 and 每次变化至少有一个二进制位从1变 0,or 每次至少有一个位从0变 1,所以最多有l ...

随机推荐

  1. Oracle数据库学习(四)

    11.创建表 crate table tab1(f_id number not null,f_a varchar2(7) not null,f_b number(6,2) not null): 主键: ...

  2. 【搜索】【入门】洛谷P1036 选数

    题目描述 已知 n个整数x1​,x2​,…,xn​,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...

  3. git提交时报错 permission denied

    git push 时报错:permission denied xxx 目前很多解决办法是生成公钥和秘钥,这种方法安全可靠,比较适用于一台电脑对应一个git账户,但是多个账户在同一台电脑上提交使用git ...

  4. java中equals和==的区别详解

    java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...

  5. Vue2+webpack+node 配置+入门+详解

    Vue2介绍 1.vue2.0 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架. Vue 的核心库只关注视图层 采用单文件组件 复杂大型单页应用程序(SPA) 响 ...

  6. ecshop里提出来的js常用函数

    目录 Utils.js jquery.listTable.js 使用例子: ecshop里提出来的js常用函数 Utils.js /* $Id : utils.js 5052 2007-02-03 1 ...

  7. 大道至简读后感——JAVA伪代码

    import.java.Dadaozhijain public class YuGongYiShan { //愚公移山 愚公={项目管理人员}: 原始需求={惩山北之塞,出入之迂也}: 沟通方式={聚 ...

  8. 684. Redundant Connection

    https://leetcode.com/problems/redundant-connection/description/ Use map to do Union Find. class Solu ...

  9. jichu

    第 题 请编写函数 fun,其功能时:计算并输出当 x<0.97 时下列多项式的值,直到| sn-s(n-)|<0.000001 为止. Sn=+.5x+)/!x()+…+)()…..() ...

  10. python双向链表的疑问(Question)

    Table of Contents 1. 问题 问题 在看 collections.OrderedDict 的源码时,对于它如何构造有序的结构这一部分不是很理解,代码如下: class Ordered ...