CF641D. Little Artem and Random Variable

Solution

设给定的两个序列为mx1..n,mn1..nmx_{1..n},mn_{1..n}mx1..n​,mn1..n​。
令第一个骰子投到1..n1..n1..n的概率为p1..np_{1..n}p1..n​
令第二个骰子投到1..n1..n1..n的概率为q1..nq_{1..n}q1..n​
显然有
mxi=(∑j≤ipj)(∑j≤ipj)−(∑j<ipj)(∑j<ipj)mx_i=(\sum_{j\leq i}p_j)(\sum_{j\leq i}p_j)-(\sum_{j<i}p_j)(\sum_{j<i}p_j)mxi​=(j≤i∑​pj​)(j≤i∑​pj​)−(j<i∑​pj​)(j<i∑​pj​)
mni=(∑j≥ipj)(∑j≥ipj)−(∑j>ipj)(∑j>ipj)mn_i=(\sum_{j\geq i}p_j)(\sum_{j\geq i}p_j)-(\sum_{j>i}p_j)(\sum_{j>i}p_j)mni​=(j≥i∑​pj​)(j≥i∑​pj​)−(j>i∑​pj​)(j>i∑​pj​)
可以把∑j≤xpj\sum_{j\leq x}p_j∑j≤x​pj​当成横坐标,把∑j≤yqj\sum_{j\leq y}q_j∑j≤y​qj​当成纵坐标,这样就形成一个1∗11*11∗1的矩形,mxi.mnimx_i.mn_imxi​.mni​分别为其中一个LLL形矩阵面积,可以求得:
1−∑j≤imxi+mni+1=(∑j>ipj)+(∑j>iqj)1-\sum_{j\leq i}mx_i+mn_{i+1}=(\sum_{j>i}p_j)+(\sum_{j>i}q_j)1−j≤i∑​mxi​+mni+1​=(j>i∑​pj​)+(j>i∑​qj​)
∑mni+1=(∑j>ipj)(∑j>iqj)\sum mn_{i+1}=(\sum_{j>i}p_j)(\sum_{j>i}q_j)∑mni+1​=(j>i∑​pj​)(j>i∑​qj​)
这样就可以通过求解一元二次方程求出(∑j>ipj)(\sum_{j>i}p_j)(∑j>i​pj​)和(∑j>iqj)(\sum_{j>i}q_j)(∑j>i​qj​),差分即可。

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se second
#define int llusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-15;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=1e9+7;
const int MAXN=100005;
const int INF=0x7fffffff;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
double mx[MAXN],mn[MAXN],smx[MAXN],smn[MAXN],sp[MAXN],sq[MAXN];
signed main()
{int n=read();for (int i=1;i<=n;i++) scanf("%lf",&mx[i]);for (int i=1;i<=n;i++) scanf("%lf",&mn[i]);for (int i=1;i<=n;i++) smx[i]=smx[i-1]+mx[i];for (int i=n;i>=1;i--) smn[i]=smn[i+1]+mn[i];for (int i=1;i<=n;i++){double pl=1+smx[i]-smn[i+1],mul=smx[i],mi=sqrt(pl*pl-mul*4+eps);sp[i]=(pl+mi)*0.5,sq[i]=(pl-mi)*0.5;}for (int i=1;i<=n;i++) printf("%.10lf ",sp[i]-sp[i-1]); puts("");for (int i=1;i<=n;i++) printf("%.10lf ",sq[i]-sq[i-1]); puts("");return 0;
}

CF641D. Little Artem and Random Variable相关推荐

  1. 【概率论】随机变量 Random Variable

    [概率论]随机变量 Random Variable 2.1 The Definition of a Random Variable 2.2 The Distribution Function of a ...

  2. 高等概率论 Chapter 5. Random Variables on a Countable Space

    Chapter 5 Random Variables on a Countable Space 南京审计大学统计学研究生第一学期课程,<高等概率论>. 欢迎大家来我的github下载源码呀 ...

  3. Paper:可解释性之VI/PFI《All Models are Wrong, but Many are Useful: Learning a Variable’s Importance》翻译与解读

    Paper:可解释性之VI/PFI<All Models are Wrong, but Many are Useful: Learning a Variable's Importance by ...

  4. 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...

    世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random  Walk)是一种解决随机问题的方法,它 ...

  5. Lecture 12: Iterated Expectations; Sum of a Random Number of Random Variables

    前言:本节课讲了条件期望以及他的应用, 任意数量的独立随机变量的加和以及它的期望和方差. E[X∣Y=y]=∑xxpX∣Y(x∣y)E[X|Y = y] = \sum_x xp_{X|Y}(x|y) ...

  6. Variable (mathematics)

    In mathematics, a variable (from Latin variabilis, "changeable") is a symbol and placehold ...

  7. Conditional Random Fields:ProbabilisticModels for Segmenting and Labeling Sequence Data

    Conditional Random Fields:Probabilistic Models for Segmenting and Labeling Sequence Data 条件随机场:对于段落和 ...

  8. Statistical Inference-Univariate Random Variables

    1.1 Discrete Random Variables A random variable is discrete if it takes values in some countable set ...

  9. 随机变量(Random Varibales)

    1.随机变量 笔记来源:Statistics 101: Random Variable Basics 1.1 什么是随机变量? 随机变量的例子:盒子里分子运动的速度.棒球比赛中的得分.乘航班的人数.考 ...

最新文章

  1. Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity
  2. Kafka入门教程(转载)
  3. shell 中的return
  4. 一文教你使用java开发一款推箱子游戏
  5. JDBC常用API小结
  6. Android开发进阶1 思维改变 如何知道我需要学什么(上)
  7. Vue前端路由~非常详细哦,不要错过
  8. 入行Java能做什么?亿级畅销书作者李刚在线解答!
  9. 真正的Maven经常使用命令
  10. 英文参考文献的正确引用格式详解
  11. 暗影精灵3 PLUS 安装黑苹果
  12. HTML简单代码示例
  13. C语言 大赛现场统分
  14. Windows 使用学习
  15. 子曰:中庸之为德也,其至矣乎!民鲜久矣。
  16. DxO PhotoLab 4 for Mac(RAW图片处理工具)
  17. cdn服务器pnk_cdn服务器是什么
  18. 我的世界服务器怎么弄领地语言,我的世界领地指令大全 教你如何设置领地
  19. 接口定义语言IDL,COM
  20. Windows部署Docker

热门文章

  1. 男女共厕,考验男生心理素质的时候到了......
  2. 美国Thinkfun的“编程三剑客”少儿编程从入门到精通
  3. 每日一笑 | 程序员千万不能轻易去网吧!
  4. 写好一份数据分析报告的13个要点
  5. 谁的代码注释我都不服,就服你的!
  6. 如何修改pfpj的服务器,如何更改布局?
  7. python选择题题目_Python接口测试题(持续更新中)
  8. uibot在子程序执行js失败_使用 Node.js 将珍藏的 bash 脚本封装成命令行工具
  9. c语言三目运算符_C语言中的三目运算符是啥?有何用处?
  10. oracle数据缓冲区作用,Oracle内存结构(02)--缓冲区