不难发现,对于一个区间 \([l, r]\),恰好只有一个奶牛接受邀请的概率为

\[\prod_{i=l}^r(1-p_i) \cdot \sum_{i=l}^r \frac {p_i} {1-p_i}
\]

设 \(m_a = \prod_{i=1}^a(1-p_i),\,s_a=\sum_{i=1}^a\frac{p_i}{1-p_i}\),那么上面的式子可以表示为

\[\frac{m_r}{m_{l - 1}}\cdot (s_r-s_{l-1})
\]

这个式子是凸的。它具有决策单调性,循环枚举 \(l\),里面的 \(r\) 一定是递增的。

#include <cstdio>

inline double max(const double& a, const double& b){
return a > b ? a : b;
} const int MAXN = 1e6 + 19; int r = 1;
double p[MAXN], m = 1, s = 0, ans;
int n; int main(){
std::scanf("%d", &n);
for(int i = 1; i <= n; ++i){
std::scanf("%lf", p + i);
p[i] /= 1e6;
ans = max(ans, p[i]);
}
for(int l = 1; l <= n; ++l){
while(r <= n && m * s <= m * (1 - p[r]) * (s + p[r] / (1 - p[r]))){//r 具有单调性
m *= 1 - p[r];
s += p[r] / (1 - p[r]);
++r;
}
ans = max(ans, m * s);//m * s 是选择[l,r]的概率
m /= 1 - p[l];
s -= p[l] / (1 - p[l]);//去除 l。
}
std::printf("%d\n", (int)(ans * 1e6));
return 0;
}

\(\quad\) 有点儿像斜率优化。

洛谷 P5242 [USACO19FEB]Cow Dating P的更多相关文章

  1. 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 ...

  2. [洛谷P4183][USACO18JAN]Cow at Large P

    题目链接 Bzoj崩了之后在洛谷偶然找到的点分好题! 在暴力的角度来说,如果我们$O(n)$枚举根节点,有没有办法在$O(n)$的时间内找到答案呢? 此时如果用树形$dp$的想法,发现是可做的,因为可 ...

  3. 洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)

    洛谷题面传送门 点分治 hot tea. 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献.我们考虑以 \(u\) 为根对整棵树进行一遍 DFS.那么对于一个点 \(v\), ...

  4. 洛谷P3611 [USACO17JAN]Cow Dance Show奶牛舞蹈

    题目描述 After several months of rehearsal, the cows are just about ready to put on their annual dance p ...

  5. 洛谷P3120 [USACO15FEB]Cow Hopscotch

    题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John&apos;s cows have invented ...

  6. 【洛谷P3014】Cow Line

    题目大意:康托展开和逆康托展开模板题. 题解: 注:20!约为 2e18. 代码如下 #include <bits/stdc++.h> using namespace std; const ...

  7. 【洛谷P2966】Cow Toll Paths

    题目大意:给定 N 个节点,M 条边的无向图,边有边权,点有点权,现给出 Q 个询问,每个询问查询两个节点之间的最短路径,这里最短路径的定义是两个节点之间的最短路径与这条路径中经过的节点点权的最大值之 ...

  8. [USACO19FEB]Cow Dating

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

  9. [USACO19FEB]Cow Dating——找规律

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

随机推荐

  1. mysql设置定时任务(对于中控心跳包的实现有意义)

    转载:https://www.cnblogs.com/laowu-blog/p/5073665.html 目前用途:因为 脚本正常开关会给中控发送消息 但是万一脚本被强制关闭 没有触发脚本关闭事件就无 ...

  2. java作业 11.10

    package text3; import java.io.File; import java.io.IOException; import java.nio.file.Files; public c ...

  3. 分布式一致性协议 --- Paxos

    问题 Paxos 到底解决什么样的问题,动机是什么 Paxos 流程是怎么样的? Paxos 算法的缺陷是什么 概述 Paxos 是分布式一致性算法,根据少数服从多数的原则多个节点确定某个数值.通过学 ...

  4. Python中的浅复制、深复制

    参考 https://docs.python.org/3/library/copy.html?highlight=copy%20copy#copy.copy https://en.wikipedia. ...

  5. SpringBoot2.x过后static下的静态资源无法访问

    @Configuration public class CorsConfig extends WebMvcConfigurationSupport {/** * 添加静态资源文件,外部可以直接访问地址 ...

  6. 在CDN不能使用的时候加载自己服务器的资源

    <script src="http://wlib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script> ...

  7. MySQL 将字符串转换为数字

    转载自:https://www.cnblogs.com/xiaoleiel/p/8316508.html 在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在 ...

  8. 创建DataTable与DataGridView进行绑定

    private DataTable dt = new DataTable(); BindingSource bs = new BindingSource(); /// <summary> ...

  9. Python结合Pywinauto 进行 Windows UI 自动化

    转:Python结合Pywinauto 进行 Windows UI 自动化 https://blog.csdn.net/z_johnny/article/details/52778064 说明:Pyw ...

  10. HDU2612 Find a way (跑两遍BFS)

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...