原题戳这里

题解

显然原题等价于让我们求这个式子\(\prod\limits_{i=l}^{r}(1-p_i)\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\)的最大值是多少

打打表,或者直观上感受一下,这东西是个凸壳,进一步观察,你会发现随着左端点的右移,最优决策点也在右移,于是拿个\(two\ pointer\)搞一搞就好了

凸性的证明在代码下面QWQ

代码:

#include <bits/stdc++.h>

using namespace std;

#define N 1000000

int n, p[N + 5];
long double prod[N + 5], sum[N + 5], ans; int main() {
scanf("%d", &n);
prod[0] = 1;
for (int i = 1; i <= n; ++i)
scanf("%d", &p[i]), prod[i] = p[i] / 1e6, sum[i] = sum[i - 1] + prod[i] / (1 - prod[i]), prod[i] = prod[i - 1] * (1 - prod[i]);
int j = 1;
for (int i = 1; i <= n; ++i) {
while (j + 1 <= n && prod[j + 1] * (sum[j + 1] - sum[i - 1]) >= prod[j] * (sum[j] - sum[i - 1])) j++;
ans = max(ans, prod[j] / prod[i - 1] * (sum[j] - sum[i - 1]));
}
printf("%lld\n", (long long)(ans * 1e6));
return 0;
}

证明:

①式子的值递增时,有如下不等式成立

\[\prod\limits_{i=l}^{r}(1-p_i)\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\leqslant \prod\limits_{i=l}^{r+1}(1-p_i)\sum\limits_{i=l}^{r+1}\frac{p_i}{1-p_i}
\]

简单的化一下,会得到一个形式非常优美的东西

\[\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\leqslant 1
\]

②式子的值递减时,同理①,可得到\(\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\geqslant 1\)

然后又因为\(\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\)在固定左端点并把右端点向右移动时是严格单增的,所以是凸的

有了上面的结论,也可以证明最优决策点的单调移动了

[USACO19FEB]Cow Dating——找规律的更多相关文章

  1. The Cow Lineup_找规律

    Description Farmer John's N cows (1 <= N <= 100,000) are lined up in a row.Each cow is labeled ...

  2. P5242 [USACO19FEB]Cow Dating

    题目链接 题意分析 首先我们可以得出计算公式 \[s_i=\prod_{k=1}^i(1-p_k)\] \[f_i=\sum_{k=1}^i\frac{p_k}{1-p_k}\] 那么 \[ans(i ...

  3. [USACO19FEB]Cow Dating

    Luogu5242 通过观察数据,我们可以发现,右端点的取值是单调递增的.于是,我们可以极限一波,用一个双指针法,类似于队列. 右端点的取值满足以下公式: (1-p1)(1-p2)..(1-pn) * ...

  4. 洛谷 P5242 [USACO19FEB]Cow Dating P

    这道题很有意思. 不难发现,对于一个区间 \([l, r]\),恰好只有一个奶牛接受邀请的概率为 \[\prod_{i=l}^r(1-p_i) \cdot \sum_{i=l}^r \frac {p_ ...

  5. hdu 3951 - Coin Game(找规律)

    这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ...

  6. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  7. hdu4952 Number Transformation (找规律)

    2014多校 第八题 1008 2014 Multi-University Training Contest 8 4952 Number Transformation Number Transform ...

  8. CF456B Fedya and Maths 找规律

    http://codeforces.com/contest/456/problem/B CF#260 div2 B Fedya and Maths Codeforces Round #260 B. F ...

  9. hdu 4731 2013成都赛区网络赛 找规律

    题意:找字串中最长回文串的最小值的串 m=2的时候暴力打表找规律,打表可以用二进制枚举

随机推荐

  1. HTML5页面如何在手机端浏览器调用相机、相册功能

    最近在做一个公司的保险信息处理系统项目,开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file"/& ...

  2. 牛客 P21336 和与或 (数位dp)

    大意: 给定数组$R$, 求有多少个数组$A$, 满足$0\le A_i \le R_i$且$A_0+...+A_{N-1}=A_0\space or ...\space or \space A_{N ...

  3. .Net C# EF database first connectionstring

    <connectionStrings> <add name="CupCreditCheckDB" connectionString="metadata= ...

  4. 怎样设置cookie的到期时间

    1. 使用Cookie的: Expires 属性. 它可以设置cookie的过期时间. 下面的代码表示id这条cookie的过期时间是2015年10月21日早上7点28分; Set-Cookie: i ...

  5. Idea+Maven部署打包JavaFX项目遇到的坑

    用Idea写了一个JavaFX项目,创建artifacts,build artifacts,运行build出来的exe可执行文件时总是遇到 class not found的错误,如下图 一开始根据提示 ...

  6. oracle中查询表中的触发器,关闭启用操作

    1.查询指定表中有哪些触发器 select * from all_triggers WHERE table_name='表名' 2.禁用指定表中所有的触发器 alter table table_nam ...

  7. docker 无法使用vi

    更新来源 apt-get update   安装vim apt-get install -y vim

  8. vsCode设置代码片段

    输入vue.json { "Print to console": { "prefix": "vv", "body": [ ...

  9. PLSQL导出表结构和数据的三种方式

    1.导出表结构和数据方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出的 ...

  10. wpf win10 popup位置偏移问题

    同样问题参照: https://stackoverflow.com/questions/18113597/wpf-handedness-with-popups 解决方案: private static ...