https://codeforces.com/contest/1795/problem/C

用二分+前缀和+差分卡过

#include <iostream>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int t;
int n;
long long a[N],b[N],s[N],res[N],num[N];
void fact(int x,int l,int r){
num[l]++;
int k=l-1;
while(l<r){
int mid=l+r>>1;
if(s[mid]-s[k]<x) l=mid+1;
else r=mid;
}
if(s[l]-s[k]<=x) num[l+1]--;
else num[l]--,res[l]+=x-(s[l-1]-s[k]);//这里第l个人没有喝满
}
int main(){
cin>>t;
while(t--){
cin>>n;
memset(num,0,sizeof num);//注意归零
memset(res,0,sizeof res);
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
cin>>b[i];
s[i]=s[i-1]+b[i];
}
for(int i=1;i<=n;i++){
fact(a[i],i,n);
}
for(int i=1;i<=n;i++){
num[i]+=num[i-1];
res[i]+=num[i]*b[i];
cout<<res[i]<<" ";
}
cout<<endl;
}
}
/*
题目大意就是给定n杯茶多少毫升和n个人能喝多少毫升,一开始第i个人在喝第i杯茶
每喝完一次,他们就要向前走去喝第i-1杯茶,喝完为止,第一个人往前走就直接去除
思路就是对于前缀和和差分和二分
对于第i杯茶,找到第i~j这段和恰好大于a[i],然后第i个人的喝茶数就加一
对于第j个人需要特判3种情况
只需二分查找和,并记录每个人的喝茶数量,以及加上喝了不到最大喝茶量的茶
就是答案
*/

C. Tea Tasting的更多相关文章

  1. 女士品茶 | The Lady Tasting Tea | 统计学史

    The Lady Tasting Tea - How Statistics Revolutionized Science in the Twentieth Century 本书只讨论了20世纪这100 ...

  2. TEA,XXTEA介绍,对称加密

    总结:在使用加密的时候,我们可以加入随机数,这样相同的明文,每次加密后得到不同的密文,同时可以在密文中加入密文有效期,控制密文的有效时间长度. 针对有的功能扩展使用,很好的思想. TEA对 64 位数 ...

  3. TEA(Tiny Encryption Algorithm)

    简介 TEA是一种简单高效的加解密算法,以速度快,实现简单著称.TEA算法每一次可以操作64-bit数据,采用128-bit作为key,算法采用迭代的形式,推荐的迭代轮数是64,最少32. 代码(默认 ...

  4. 2016 年青岛网络赛---Tea

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5881 Problem Description Tea is good. Tea is life. Te ...

  5. Codeforces Round #311 (Div. 2)B. Pasha and Tea 水题

    B. Pasha and Tea Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/557/prob ...

  6. HDU 5881 Tea

    Tea Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. 【置换,推理】UVa 1315 - Creaz tea party

    Dsecription n participants of «crazy tea party» sit around the table. Each minute one pair of neighb ...

  8. QQ协议的TEA加解密算法

    QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...

  9. TEA算法

    我们要讨论的最后一个分组密码加密算法是TEA(Tiny Encryption Algorithm).到目前为止,我们在前面所呈现的连线图可能会使你得出如下结论:分组密码加密算法必须是复杂的.TEA却能 ...

  10. 利用TEA算法进行数据加密

    TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计. ...

随机推荐

  1. CF1051E Vasya and Big Integers

    [CF1051E Vasya and Big Integers](Problem - E - Codeforces) sb的做法 单调队列乱整( #include<bits/stdc++.h&g ...

  2. 如何通过Zabbix Docker配置HTTPS访问系统?

    概述 前面文章曾介绍过如果使用docker-compose快速部署一个Zabbix系统,但是部署的Zabbix系统是使用http协议进行访问的.有时候为了保证安全.我们需要配置使用https协议进行访 ...

  3. 【学习笔记】C/C++ 设计模式 - 工厂模式(上)

    介绍说明 在年初七的时候,学习了工厂模式,今天在复习的时候发现漏了几个知识点,因此重写这篇文章,以循环渐进的描述方式来对比不同的使用技巧. 工厂设计模式属于 "创建型设计模式",在 ...

  4. Node.js 应用全链路追踪技术——全链路信息存储

    作者:vivo 互联网前端团队- Yang Kun 本文是上篇文章<Node.js 应用全链路追踪技术--全链路信息获取>的后续.阅读完,再来看本文,效果会更佳哦. 本文主要介绍在Node ...

  5. .Net Core(.Net6)创建grpc

    1.环境要求 .Net6,Visual Studio 2019 以上 官方文档: https://learn.microsoft.com/zh-cn/aspnet/core/tutorials/grp ...

  6. 定位bug

    软件测试阶段:单元测试,集成测试,系统测试,验收测试 测试人员参与的软件测试阶段一般来说只有集成测试和系统测试阶段.集成测试阶段主要测试的是接口:系统测试阶段主要是功能测试,兼容性测试等,涉及到定位b ...

  7. TIM + DMA + ADC

    #include "public.h" #define FFT_POINT (256) static uint16_t _DmaBuffer[FFT_POINT]; static ...

  8. 注释、input()、运算符、组织结构(顺序、选择、循环)

    注释 单行注释 # 多行注释 将三对引号之间的为多行注释 ''' ''' 中文编码的声明注释 #coding:gbk input()函数 接受来自用户的输入 返回值是str 值的存储 使用=对输入的值 ...

  9. 单词检索(search)

    单词检索(search) \(Description\) 小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务. 由于学校需要一些材料,校长需要在文章中检索一些信息.校长一共给了小可可N篇文章, ...

  10. CentOS 搭建 samba 服务器并通过 Windows 访问

    第一步 下载安装 samba.samba-client sudo yum -y install samba samba-client 终端提示安装完成 第二步 创建共享文件夹,这个文件夹到时候可以通过 ...