题意: 不概括了..太长了..

额第一次做这种问题 算是概率dp吗?

保存前缀项中第一个和最后一个的概率 然后每添加新的一项 就解除前缀和第一项和最后一项的关系 并添加新的一项和保存的两项的关系

这里关系指的是两者相邻会产生的额外收入(其中一个满足条件就能得到 因此公式是 2000 * (rate[a] * rate[b] + rate[a] * ( 1 - rate[b]) + rate[b] * (1 - rate[a]))

至于一开始为什么老是调不过去呢..我发现添加第三项的时候前两项是不用解除关系的...

啊啊啊啊这题我敲了大半个小时敲得都烦死了= = 不过交上去直接Pretest Pass了

代码稍显冗长.. 凑和着看吧..

#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#define INF 0x3f3f3f3f
#define mem(str,x) memset(str,(x),sizeof(str))
#define STOP puts("Pause");
using namespace std;
typedef long long LL; int main()
{
int n, p;
int l, r;
double rate[], ans = ;
scanf("%d%d", &n, &p);
scanf("%d%d", &l, &r);
if(l % p) rate[] = (double)(r / p - l / p) / (r - l + );
else rate[] = (double)(r / p - l / p + ) / (r - l + );
//printf("i = %d rate = %f\n", 1, rate[0]);
for(int i = ; i <= n; i++){
scanf("%d%d", &l, &r);
if(l % p) rate[] = (double)(r / p - l / p) / (r - l + );
else rate[] = (double)(r / p - l / p + ) / (r - l + );
if(i == ){
ans += (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) * ;
rate[] = rate[];
}
else if (i == ){
ans += (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) *
+ (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) * ;
rate[] = rate[];
}
else{
ans += (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) *
+ (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) *
- (rate[] * rate[] + rate[] * ( - rate[]) + rate[] * ( - rate[])) * ;
rate[] = rate[];
}
//printf("i = %d rate = %f ans = %f\n", i, rate[2], ans);
}
printf("%f\n", ans);
return ;
}

Codeforces Round #341 Div.2 C. Wet Shark and Flowers的更多相关文章

  1. Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速

    题目链接: http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test2 se ...

  2. Codeforces Round #341 Div.2 B. Wet Shark and Bishops

    题意:处在同一对角线上的主教(是这么翻译没错吧= =)会相互攻击 求互相攻击对数 由于有正负对角线 因此用两个数组分别保存每个主教写的 x-y 和 x+y 然后每个数组中扫描重复数字k ans加上kC ...

  3. Codeforces Round #341 Div.2 A. Wet Shark and Odd and Even

    题意是得到最大的偶数和 解决办法很简单 排个序 取和 如果是奇数就减去最小的奇数 #include <cstdio> #include <cmath> #include < ...

  4. Codeforces Round #341 (Div. 2) E - Wet Shark and Blocks

    题目大意:有m (m<=1e9) 个相同的块,每个块里边有n个数,每个数的范围是1-9,从每个块里边取出来一个数组成一个数,让你求组成的方案中 被x取模后,值为k的方案数.(1<=k< ...

  5. Codeforces Round #341 (Div. 2)

    在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h> typedef long ...

  6. Codeforces Round #341 (Div. 2) ABCDE

    http://www.cnblogs.com/wenruo/p/5176375.html A. Wet Shark and Odd and Even 题意:输入n个数,选择其中任意个数,使和最大且为奇 ...

  7. Codeforces Round #341 (Div. 2) D. Rat Kwesh and Cheese 数学

    D. Rat Kwesh and Cheese 题目连接: http://www.codeforces.com/contest/621/problem/D Description Wet Shark ...

  8. Codeforces Round #341 (Div. 2)B

    B. Wet Shark and Bishops time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  9. Codeforces Round #341 (Div. 2)A

    A. Wet Shark and Odd and Even time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

随机推荐

  1. ubuntu13.04下建立嵌入式开发平台

    linux下建立嵌入式交叉开发平台,需要三个基本部分:编辑工具.交叉工具链以及平台相关库. 一.编辑工具: 一般Linux系统本身都带有编辑工具,比如VI.VIM.gedit等.这里记录的是第三方编辑 ...

  2. hibernate 返回新插入数据的Id

    例如 表明 studentInfo String sql="set set nocount on studentInfo(列名,列名) values('值','值');select @@id ...

  3. c# UrlEncode,UrlDecode

    用 C#  winform  处理 utf-8,gb2312编码转换方法 首先,在项目属性 的  应用程序——目标框架中,选择 .NET Framework 4 然后再添加引用——.NET 中选择  ...

  4. WC项目要求

    #include "stdio.h" #include "string.h" #include "stdlib.h" int charcal ...

  5. 添加网络打印机的步骤(xp和win2008)

    1.如题,设置好打印机去的ip地址和子网掩码等信息. 2 .xp不像其他新的系统那么好用那么智能...只能慢慢来 如果是xp,注意,请添加网络打印机的时候选  :添加本地打印机,,记得哦 然后如图 然 ...

  6. Android Design Support Library使用详解

    Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...

  7. unix basic command

    1. get start Command Example Description ls ls ls -a ls -l 输出目录文件 输出文件包括隐藏文件 输出文件详细信息 pwd pwd show p ...

  8. JS第二天简单总结

    布尔型变量:true,flase 广泛用于真假的逻辑判断 对象:分类,对象是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体: 例如,var today = new Date();中,Date ...

  9. height与line-height

    1.网页的所有元素可以分为块元素和行元素.一行文字所在的一个逻辑区域是行元素,其他的元素就都是块元素line-height只针对行元素,height针对其他所有元素 2. width,height对于 ...

  10. Linux中的find(-atime、-ctime、-mtime)指令分析

    本篇主要对find -atime(-ctime..mtime)指令的用法.参数.运行情况进行分析 用法: find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} ...