[arc072F]Dam-[单调队列]
Description
Solution
首先我们肯定不能那么耿直地直接把水混合起来吧。。不然分分钟完球。
那么怎么找到最优解呢?假如我们把水的体积和温度按顺序插入队列,这时我们插入第i天的水。假如这个时候水量超过了L,我们要把前面的部分水排掉。
我们目前有两种排水方法:
1.不断去掉队列的队首(即最开始插入队列的水)
2.选一个位置j,把队列中位置[1,j]的水量按照比例分别减少一部分(就是在第j个位置对应的当天倒掉一部分水)
普通的队列,无法比较方法1,2的优劣。我们考虑单调队列(队列中的水的温度保持单调递增)
由于我们的队列是单调的,显然第1种更优。
那么,插入了第i天的水后,还要确保队列的单调。设当前队列的队尾下标为r。
假如说第i天的水温比r的水温低,那么假如要放水,把i和r混合后放显然会比先放掉r的水再放i的水更优。所以我们把i和r混合起来。
如此直到队列恢复单调。
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define _v first
#define _t second
using namespace std;
typedef long long ll;
pair<ll,double> q[];
int n,L,t,v;
int l=,r=;
ll pour,all_water=;double degree=;
int main()
{
scanf("%d%d",&n,&L);
for (int i=;i<=n;i++)
{
scanf("%d%d",&t,&v);
while (all_water+v>L)
{
pour=min(q[l]._v,all_water+v-L);
q[l]._v-=pour;
all_water-=pour;
degree-=q[l]._t*pour;
if (!q[l]._v) l++;
}
all_water+=v;degree+=1ll*t*v;
q[++r]=make_pair(v,t);
while (l<r&&q[r]._t<q[r-]._t)
{
q[r-]._t=(q[r]._t*q[r]._v+q[r-]._t*q[r-]._v)/(q[r]._v+q[r-]._v);
q[r-]._v+=q[r]._v;r--;
}
printf("%.7f\n",degree/L);
}
}
[arc072F]Dam-[单调队列]的更多相关文章
- 【ARC072F】 Dam 单调队列
题目大意: 有一个水库,容量为$L$,一开始是空的.有$n$天. 对于第i天,每天早上有$v_i$单位的,水温为$t_i$的水流进来.每天晚上你可以放掉一些水,多少自定.但是必须保证第二天水库不会溢出 ...
- BestCoder Round #89 B题---Fxx and game(单调队列)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945 问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路: B ...
- 单调队列 && 斜率优化dp 专题
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...
- FZU 1914 单调队列
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个 ...
- BZOJ 1047 二维单调队列
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 题意:见中文题面 思路:该题是求二维的子矩阵的最大值与最小值的差值尽量小.所以可以考 ...
- 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> ...
- BZOJ1047: [HAOI2007]理想的正方形 [单调队列]
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2857 Solved: 1560[Submit][St ...
- hdu 3401 单调队列优化DP
Trade Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 【转】单调队列优化DP
转自 : http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列是一种严格单调的队列,可以单调递增,也可以单调递减.队 ...
- hdu3530 单调队列
Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
随机推荐
- Excel连接字符串在.NET中的应用
转:https://www.cnblogs.com/jaxu/archive/2011/07/29/2121022.html 介绍几种在.NET中直接连接Excel作为数据源的几种方法以及连接字符串的 ...
- Replication--复制Token
--创建tokenDECLARE @tokenID AS INT;EXEC sys.sp_posttracertoken @publication = @publication,@tracer_tok ...
- Tomcat – Java.Lang.OutOfMemoryError: PermGen Space
很多时候,在开发阶段Tomcat重复的重启过程中会遇到java.lang.OutOfMemoryError : PermGen space 错误. 1 2 3 4 java.lang.OutOfMem ...
- Oracle EBS 键弹性域 段限定词取值
中间是回车符 对应编码时 Chr(10) substr(replace(t.compiled_value_attributes, Chr(10), ''), 3, 1)
- 解决UITableView在iOS7中UINavigationController里的顶部留白问题
解决UITableView在iOS7中UINavigationController里的顶部留白问题 出现问题时候的截图: 源码: 用到的类: UIViewController+TitleTextAtt ...
- Cloudstack
1.cloudstack介绍 一个开源具有高可用性及扩展性的云计算平台,Cloudstack是一个开源的云操作系统: cloudstack支持管理大部分主流的hypervisors,如:VMware, ...
- SMTP服务器设置
Web.config中使用如下配置 <system.net> <mailSettings> <smtp from="info@site.c ...
- [2018HN省队集训D5T2] party
[2018HN省队集训D5T2] party 题意 给定一棵 \(n\) 个点以 \(1\) 为根的有根树, 每个点有一个 \([1,m]\) 的权值. 有 \(q\) 个查询, 每次给定一个大小为 ...
- HDU1407 测试你是否和LTC水平一样高
题目大意:给出一个num,计算方程x^2+y^2+z^2 = num的第一个正整数解(字典序),0 < num <= 10000. 方法参考了网上的博客,自己打了一波,发现还有很多不懂的地 ...
- 关于第三次寒假作业之C++Calculator项目的情况:
一.仓库地址: object-oriented: 二.作业要求: Calculator: 三.完成本次作业的情况及感受: 刚接触到这个题目的时候,自己就是那丈二的和尚,摸不着头脑,由于自己视频找得比较 ...