题目链接:http://codeforces.com/contest/948/problem/C

题目大意:给定长度n(n<=1e5),第一行v[i]表示表示第i堆雪的体积,第二行t[i]表示第1~i天的雪将要消融的体积,一堆雪如果消融到体积为0则消失,求每天消融的雪的体积。

解题思路:用优先队列,第i天就将v[i]+sum[i-1]放入优先队列中,然后初始消融量ans=t[i]*q.size(),假设每堆雪都够消融,然后根据优先队列找到q.top()<=sum[i]即不够消融的,减掉差值。

代码

 #include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<functional>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N=1e5+; LL t[N],sum[N],v[N]; //sum[i]是t[i]的前缀和 int main(){
priority_queue<LL,vector<LL>,greater<LL> >q;
int n,m;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%lld",&v[i]); }
for(int i=;i<=n;i++){
scanf("%lld",&t[i]);
sum[i]=t[i]+sum[i-];
}
for(int i=;i<=n;i++){
q.push(v[i]+sum[i-]); //加上sum[i-1],可以在减的时候将前一段没有消融的sum[i-1]抵消掉
LL ans=t[i]*q.size(); //先假设没有一堆雪不够消融t[i]
while(!q.empty()&&q.top()<=sum[i]){ //找到不够t[i]的,减掉差值(不够的部分)
ans+=q.top()-sum[i];
q.pop();
}
printf("%lld%c",ans,i==n?'\n':' ');
}
return ;
}

Codeforces 948C Producing Snow(优先队列+思维)的更多相关文章

  1. CodeForces - 948C Producing Snow(优先队列)

    题意: n天. 每天你会堆一堆雪,体积为 v[i].每天都有一个温度 t[i] 所有之前堆过的雪在第 i 天体积都会减少 t[i] . 输出每天融化了的雪的体积. 这个题的正解我怎么想都很难理解,但是 ...

  2. 2018.12.05 codeforces 948C. Producing Snow(堆)

    传送门 维护一个堆. 每次先算出一个都不弹掉的总贡献. 然后把要弹掉的弹掉,并减去它们对应的贡献. 代码: #include<bits/stdc++.h> #define ri regis ...

  3. Codeforces I. Producing Snow(优先队列)

    题目描述: C. Producing Snow time limit per test 1 second memory limit per test 256 megabytes input stand ...

  4. CodeForces - 948C(前缀和 + 二分)

    链接:CodeForces - 948C 题意:N天,每天生产一堆雪体积 V[i] ,每天每堆雪融化 T[i],问每天融化了多少雪. 题解:对 T 求前缀和,求每一堆雪能熬过多少天,再记录一下多余的就 ...

  5. 【二分】Producing Snow @Codeforces Round #470 Div.2 C

    time limit per test: 1 second memory limit per test: 256 megabytes Alice likes snow a lot! Unfortuna ...

  6. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1) C.Producing Snow

    题目链接  题意  每天有体积为Vi的一堆雪,所有存在的雪每天都会融化Ti体积,求出每天具体融化的雪的体积数. 分析 对于第i天的雪堆,不妨假设其从一开始就存在,那么它的初始体积就为V[i]+T[1. ...

  7. Codeforces 923 B. Producing Snow

    http://codeforces.com/contest/923/problem/B 题意: 有n天,每天产生一堆体积为Vi的雪,每天所有雪堆体积减少Ti 当某一堆剩余体积vi<=Ti时,体积 ...

  8. [CodeForces948C]Producing Snow(优先队列)

    Description 题目链接 Solution 将温度做一个前缀和,用一个优先队列依次处理一遍 思路还是很简单的 Code #include <cstdio> #include < ...

  9. Codeforces 681C. Heap Operations 优先队列

    C. Heap Operations time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

随机推荐

  1. mvc4同一视图传入两个模型

    http://bbs.csdn.net/topics/390961335 用ViewModel,把内容和评论构造到一个类中 这个简单,定义一个模型,包含两个属性,各自为那两个模型的类型,用这个模型.比 ...

  2. python学习(21) smtp发送邮件

    原文链接: https://www.jianshu.com/p/369ec15bfe22 本文介绍python发送邮件模块smtplib以及相关MIME模块.smtplib用于生成邮件发送的代理,发送 ...

  3. python基础之模块之序列化

    ---什么是序列化(picking)? 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的 ...

  4. Python入门 语法

    Python入门 语法 语言介绍 对象,类型,值 编码规范  https://www.python.org/dev/peps/pep-0008/ 一.语言介绍 编程语言: 机器语言,汇编语言,高级语言 ...

  5. bzoj千题计划150:bzoj2738: 矩阵乘法

    http://www.lydsy.com/JudgeOnline/problem.php?id=2738 整体二分 二维树状数组累积 #include<cstdio> #include&l ...

  6. GTD实践2周年后一些体会

    从2011年7月1日算起,实践GTD已经有2年多了,在GTD一周年时写了<用iPhone打造GTD实践1周年的心得体会>这篇文章,随着实践的深入,如今又有了一些新的认识,2013年初制定的 ...

  7. Java并发编程原理与实战十一:锁重入&自旋锁&死锁

    一.锁重入 package com.roocon.thread.t6; public class Demo { /* 当第一个线程A拿到当前实例锁后,进入a方法,那么,线程A还能拿到被当前实例所加锁的 ...

  8. 生死相依:说说JQuery中die()、live()详解[翻译]

    一个web前端工程师,应该知道jquery的.live()函数,知道它是做什么用的,但是不知它是怎么样工作的,使用起来也是不得得心应手的,甚至也没听说过.die()(去掉bind事件).即使你能熟悉这 ...

  9. 为FreeBSD安装adobe flash插件

    参考 FreeBSD官方手册浏览器一章. pkg install nspluginwrapper nspluginwrapper 是一个辅助安装配置 NetScape Plugin的工具. 可以为Ne ...

  10. 学号20155308 2016-2017-2 《Java程序设计》第5周学习总结

    学号20155308 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 8.1 语法与继承架构 使用try...catch 注意多个catch一定把父类放后面 ...