codeforces 633E Startup Funding

题意

枚举左端点,对于每个左端点求一个最大的右端点使得最大。

对于得到的这个数组,随机选择k个数,求最小值期望。

题解

对于每个左端点,右端点右移时,是在一个递增、一个递减的函数中取min,二分即可解决。

接下来的问题也很好解决,可以先取log避免精度上溢

代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define sz(a) (int)a.size()
#define de(a) cout << #a << " = " << a << endl
#define dd(a) cout << #a << " = " << a << " "
#define all(a) a.begin(), a.end()
#define endl "\n"
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
//--- const int N = 1010101; int n, k;
int a[N], b[N], ma[22][N], mi[22][N], c[N];
double sum[N]; int qryma(int l, int r) {
int _ = log2(r-l+1);
return max(ma[_][l], ma[_][r-(1<<_)+1]);
}
int qrymi(int l, int r) {
int _ = log2(r-l+1);
return min(mi[_][l], mi[_][r-(1<<_)+1]);
}
int qry(int l, int r) {
if(l > r || r > n) return 0;
return min(qryma(l, r), qrymi(l, r));
} void init() {
for(int i = 1; (1<<i) <= n; ++i) {
for(int j = 1; j+(1<<i)-1 <= n; ++j) {
ma[i][j] = max(ma[i-1][j], ma[i-1][j+(1<<(i-1))]);
mi[i][j] = min(mi[i-1][j], mi[i-1][j+(1<<(i-1))]);
}
}
sum[0] = 0;
rep(i, 1, N) sum[i] = sum[i-1] + log(i);
} int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
cin >> n >> k;
rep(i, 1, n+1) cin >> a[i], ma[0][i] = a[i]*100;
rep(i, 1, n+1) cin >> b[i], mi[0][i] = b[i];
init();
rep(i, 1, n+1) {
int l = i, r = n, res = i;
while(l <= r) {
int mid = l+r>>1;
if(qryma(i, mid) < qrymi(i, mid)) {
res = mid;
l = mid+1;
} else {
r = mid-1;
}
}
c[i] = max(qry(i, res), qry(i, res+1));
}
sort(c+1, c+1+n);
double ans = 0;
rep(i, 1, n+2-k) {
double t = log(k) + sum[n-i] + sum[n-k] - sum[n-i-k+1] - sum[n];
ans += c[i] * exp(t);
}
cout << setiosflags(ios::fixed);
cout << setprecision(10);
cout << ans << endl;
return 0;
}

codeforces 633E Startup Funding(浮点数处理)的更多相关文章

  1. Manthan, Codefest 16 E. Startup Funding ST表 二分 数学

    E. Startup Funding 题目连接: http://codeforces.com/contest/633/problem/E Description An e-commerce start ...

  2. 线段树详解 (原理,实现与应用)(转载自:http://blog.csdn.net/zearot/article/details/48299459)

    原文地址:http://blog.csdn.net/zearot/article/details/48299459(如有侵权,请联系博主,立即删除.) 线段树详解    By 岩之痕 目录: 一:综述 ...

  3. Manthan, Codefest 16

    暴力 A - Ebony and Ivory import java.util.*; import java.io.*; public class Main { public static void ...

  4. CodeForces 604A(浮点数)

    这道题需要注意一个点,浮点数的误差问题 判断里的0.3*a[i]换成3*a[i]/10就过了 这个后面还要专门研究一下 #include <iostream> #include <s ...

  5. Codeforces 1 C. Ancient Berland Circus-几何数学题+浮点数求gcd ( Codeforces Beta Round #1)

    C. Ancient Berland Circus time limit per test 2 seconds memory limit per test 64 megabytes input sta ...

  6. CodeForces 404 Marathon ( 浮点数取模 -- 模拟 )

    B. Marathon time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  7. codeforces 404 B Marathon【fmod对浮点数取余】

    题意:给出一个边长为a的正方形,给出d,给出n,输出走得距离为i个d的时候的坐标 学习的这一篇 http://blog.csdn.net/synapse7/article/details/215956 ...

  8. codeforces Looksery Cup 2015 H Degenerate Matrix 二分 注意浮点数陷阱

    #include <cstdio> #include <cstring> #include <algorithm> #include <string> ...

  9. CodeForces 618A Slime Combining

    http://www.codeforces.com/contest/618/problem/A 明明觉得是水题,而我却做了一个小时. 明明觉得代码没有错,而我却错了好几次. 因为我的名字不叫明明,也不 ...

随机推荐

  1. P2P 行业解决方案

    P2P指个人与个人之间的借贷,而P2P理财是指以公司为中介机构,把这借贷双方对接起来实现各自的借贷需求.借款方可以是无抵押贷款或是有抵押贷款.而中介一般是收取双方或单方的手续费为盈利目的或者是赚取一定 ...

  2. Spring发送基于freemarker模板的邮件

    在项目开发过程中,我们经常会遇到需要发送邮件的场景,比如:用户验证邮箱的时候,有活动通知或者提醒通知的时候……有些时候我们可能只需要发送一些简单文本内容即可,但是大多数情况下我们更希望邮件的内容是丰富 ...

  3. jsonp_百度联想

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  4. td 不换行 隐藏显示多余的部分(转)

    转自:http://sha-tians.iteye.com/blog/1996162 table中td固定宽度后overflow:hidden不生效的问题 博客分类: html/css/js   前两 ...

  5. 使用SQL语句创建数据库1

    创建一个数据文件和一个日志文件的数据库 user master --只想当前使用的数据库 GO --批处理标志 create database BOOK --创建book数据库 on primary ...

  6. Rest架构下的增删改查

    首先还是要连接一下什么是Rest, REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP, ...

  7. 如鹏网学习笔记(十)DOM

    DOM笔记一.DOM简介 Document Object Model 文档对象模型 DOM的节点树模型:整个文档按照从大到小的节点划分,每一个内容都算作一个节点 DOM API 编程接口 可以用来操作 ...

  8. 【SSH网上商城项目实战03】使用EasyUI搭建后台页面框架

    转自:https://blog.csdn.net/eson_15/article/details/51312490 前面两节,我们整合了SSH并且抽取了service和action部分的接口,可以说基 ...

  9. RDCMan之DPI 和 Screen Resolution设置

    Customer要求在以下环境验证几个bug DPI setting Minimum   resolution 96 / 100% 1024x768 120 /125% 1280x960 144 / ...

  10. Cookie介绍

    1.Http协议与Cookie Cookie(小量信息)是HTTP协议指定的!先由服务器保存Cookie到浏览器,而下次浏览器请求服务器时把上一次请求得到Cookie再归还给服务器 由服务器创建保存到 ...