【codeforces 235B】Let's Play Osu!
【题目链接】:http://codeforces.com/problemset/problem/235/B
【题意】 
 
让你玩一个游戏,游戏结果由一个长度为n的01字符组成; 
这个结果的分数与连续的1的个数对应; 
对于每一个“1”的连续块,假设长度为L; 
为0的部分不计分 
则总分加上L 2   
然后告诉你每个位置有p[i]的可能性为1;1-p[i]的可能性为0; 
问你最后的期望得分是多少;
【题解】 
 
这个规则能够写成另外一种形式; 
1. 
如果两个1所在的位置为i和j; 
且i和j之间没有0 
则分数递增2 
2. 
每一个1,答案递增1; 
原理: 
2∗C(n,2)+n=n 2   
这样,我们只要枚举新加的一位是1的时候的可能情况就好; 
->在第i位新加的1个1使得连续1的个数变为2、3、4..i(i>1) 
对于长度为2的 
答案递增2*p[i]*p[i-1]; 
对于长度为3的 
答案递增2*p[i]*p[i-1]*p[i-2]… 
我们能够写出dp方程; 
设(i,j)为dp[i]*dp[i+1]..*dp[j]; 
dp[i]表示 
∑(j,i)  
这里j< i 
则有dp[i] = (dp[i-1]+p[i-1])*p[i]; 
然后对于每个i; 
答案累加2*dp[i]; 
这样就能算出,以第i个位置为某个连续”1”块的最后一个位置,这个位置为1对答案的贡献了; 
把每个位置为1的贡献都加起来; 
最后再加上,每个位置为1的贡献都为1.(即∑p[i]); 
就是最后的期望了. 
 
【Number Of WA】 
 
0 
 
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("D:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0),cin.tie(0)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e5+100;
const int INF = 0x3f3f3f3f;
int n;
double p[N],ans = 0,dp[N];
int main(){
    //Open();
    Close();//scanf,puts,printf not use
    //init??????
    cin >> n;
    rep1(i,1,n){
        cin >> p[i];
        ans+=p[i];
    }
    dp[0] = dp[1] = 0;
    rep1(i,2,n){
        dp[i] = (dp[i-1]+p[i-1])*p[i];
        ans+=2*dp[i];
    }
    cout << fixed << setprecision(10)<<ans<<endl;
    return 0;
}
【codeforces 235B】Let's Play Osu!的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
		[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ... 
- 【codeforces 707E】Garlands
		[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ... 
- 【codeforces 707C】Pythagorean Triples
		[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ... 
- 【codeforces 709D】Recover the String
		[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ... 
- 【codeforces 709B】Checkpoints
		[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ... 
- 【codeforces 709C】Letters Cyclic Shift
		[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ... 
- 【Codeforces 429D】 Tricky Function
		[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ... 
- 【Codeforces 670C】 Cinema
		[题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ... 
- 【codeforces 515D】Drazil and Tiles
		[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ... 
随机推荐
- maven tomcat 插件
			在 pom.xml 中添加如下内容 <!-- 配置 tomcat 插件 --> <build> <plugins> <plugin> <group ... 
- 《Python 源码阅读》之 类型Type
			py一切皆对象: 那么Type也是个对象.对象类型叫PyTypeObject demo >>> a = 1 >>> a 1 >>> type(a) ... 
- 解决was6版本号过期问题
			原创作品.出自 "深蓝的blog" 博客,欢迎转载.转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ... 
- Ubuntu16.04安装Caffe
			一.安装ccmake ccmake和cmake的功能是一样的,但它很方便设置编译前的一些参数,安装只需从官网下载压缩包,解压,最后将解压得到的文件夹中的bin文件夹的路径加入PATH环境变量中即可. ... 
- 【简单的案例分享,停机10分钟】10204升级CRS&DB的PSU至102044
			发现一个现象,AIX5.3+HACMP+10.2.0.4RAC+RAW的环境,执行五六年的数据库crsd.log都会报下面错误: ----------------------------------- ... 
- 2014年湖北省TI杯大学生电子设计竞赛论文格式
			2014年湖北省TI杯大学生电子设计竞赛 B题:金属物体探測定位器(本科) 2014年8月15日 文件夹 1 系统方案 1.1 XXX的论证与选择........................... ... 
- ChrisRenke/DrawerArrowDrawable源代码解析
			转载请注明出处http://blog.csdn.net/crazy__chen/article/details/46334843 源代码下载地址http://download.csdn.net/det ... 
- 杂项-Java:Shiro(Java安全架构)
			ylbtech-杂项-Java:Shiro(Java安全架构) Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以 ... 
- vmvare如何安装xp虚拟机
			http://jingyan.baidu.com/article/a681b0ded8e25e3b19434640.html 一直以来,许多的朋友都不熟悉怎么安装在虚拟机上装windows系统 200 ... 
- 本地PC安裝Centos 6.5 操作手冊
			http://www.xlgps.com/article/130038.html 一.准备工作 1.下载Centos6.5 ISO文件 我在官网上下的6.5版本CentOS-6.5-x86_64-bi ... 
