2020牛客暑期多校训练营(第八场) Kabaleo Lite
传送门:Kabaleo Lite
题意
题解
- 从数据可以看出,爆long long了,一开始没发现,和队友疯狂wa,然后还是不会负数的大数,赛后发现可以用__int128,__int128的用法见:https://blog.csdn.net/shadandeajian/article/details/81843805 。
- 首先要求顾客最多,并且只能从第一道菜开始卖,所以最大顾客数就是b[1]。
- 用c数组记录 1~i 道菜盈利的前缀和,假设 j>i 并且 c[i] < c[j],那肯定是要卖 1~j 更赚钱。假设j<i,并且c[i] < c[j],那肯定也是要卖 1~j 更赚钱。优先队列里用两个pair,c数组为第一关键字,1~i 中b[i]的最小值为第二关键字,原本是第几道菜为第三关键字。用cnt记录已经卖给几个人了,pos记录最小的卖完的菜品下标。在队列里如果队顶的第二关键字>cnt,并且第三关键字 < pos,说明可以更新答案,将第一关键字加到ans中,并更新pos和cnt,直到队列为空。
代码
1 #include<bits/stdc++.h>
2 #define ll __int128
3 #define pii pair<ll,pair<ll,ll> >
4 using namespace std;
5
6 inline __int128 read(){
7 __int128 x=0,f=1;
8 char ch=getchar();
9 while(ch<'0'||ch>'9'){
10 if(ch=='-')
11 f=-1;
12 ch=getchar();
13 }
14 while(ch>='0'&&ch<='9'){
15 x=x*10+ch-'0';
16 ch=getchar();
17 }
18 return x*f;
19 }
20
21 inline void print(__int128 x){
22 if(x<0){
23 putchar('-');
24 x=-x;
25 }
26 if(x>9)
27 print(x/10);
28 putchar(x%10+'0');
29 }
30
31 const ll maxn=1e5+10;
32 ll a[maxn],b[maxn],c[maxn];
33 priority_queue<pii> q;
34
35 int main()
36 {
37
38 ll t;
39 t=read();
40 ll kk=1;
41 while(t--){
42 ll n;
43 n=read();
44 for(ll i=0;i<n;i++) a[i]=read();
45 for(ll i=0;i<n;i++) b[i]=read();
46 for(ll i=0;i<n;i++){
47 if(i) c[i]=c[i-1]+a[i];
48 else c[i]=a[i];
49 }
50 __int128 ans=0;
51 ll bb=b[0];
52 for(ll i=0;i<n;i++){
53 bb=min(bb,b[i]);
54 q.push({c[i],{bb,i}});
55 }
56 ll cnt=0,pos=n;
57 while(!q.empty()){
58 ll x=q.top().first,y=q.top().second.first,z=q.top().second.second;
59 q.pop();
60 if(y<=cnt||pos<=z) continue;
61 ans+=x*(y-cnt);
62 cnt=y;
63 pos=z;
64 }
65 cout<<"Case #";
66 print(kk++);
67 cout<<": ";
68 print(b[0]);
69 cout<<" ";
70 print(ans);
71 cout<<endl;
72 }
73 return 0;
74 }
2020牛客暑期多校训练营(第八场) Kabaleo Lite的更多相关文章
- 2020牛客暑期多校训练营(第一场)H Minimum-cost Flow
Minimum-cost Flow 题目:给n个点,m条边.接下来m行包含(a,b,c),即a,b之间有单位流量代价为c的边.接下来有q个问题,每个问题给定(x,y),即假设每条边的容量为x/y时,从 ...
- 2020牛客暑期多校训练营(第二场) Boundary
传送门:Boundary 题意:给你n个点的坐标,问最多有多少个点可以在同一个圆上,(0,0)必须在这个圆上. 题解:三个点确定一个圆,所以暴力枚举两个点和(0,0)组成的圆,如果三个点不共线的话, ...
- 2020牛客暑期多校训练营(第一场)Easy Integration
传送门:J. Easy Integration 题意:给你n,求这个积分,最后的结果分子是记为p,分母记为q. 求(p*q-1)mod 998244353. 题解:比赛完看到巨巨说这是贝塔函数,我一搜 ...
- 2020牛客暑期多校训练营 (第二场) All with Pairs
传送门:All with Pairs 题意:给你n个字符串,求出,f(si,sj)的意思是字符串 si 的前缀和字符串 sj 后缀最长相等部分. 题解:先对所有的字符串后缀hash,用map记录每个h ...
- 2020牛客暑期多校训练营(第二场)Fake Maxpooling
传送门:Fake Maxpooling 题意:给出矩阵的行数n和列数m,矩阵 Aij = lcm( i , j ) ,求每个大小为k*k的子矩阵的最大值的和. 题解:如果暴力求解肯定会t,所以要智取 ...
- 2020牛客暑期多校训练营(第二场) F.Fake Maxpooling (单调队列)
题意:有一个\(n\)x\(m\)的矩阵,\(A_{i,j}=lcm(i,j)\),对于每个\(k\)x\(k\)的子矩阵,其最大元素贡献给答案,求答案的最大值. 题解:矩阵构成我们直接\(i*j/g ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
- 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...
- 2019牛客暑期多校训练营(第一场) B Integration (数学)
链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
随机推荐
- MQ for linux安装与卸载【转】
MQ for linux安装与卸载[转] 一.安装步骤:1. 用root帐号登录系统2. MQ安装程序需将代码安装到目录/opt/mqm下,将数据保存到目录/var/mqm下,需确保相关目录下有足够的 ...
- MySQL 设置保留几天的binlog
1 ) 查看默认的日志保存天数: mysql> show variables like 'expire_logs_days'; +------------------+-------+ | Va ...
- 【栈和队列】2、栈的基本实现 - Java
简单记录 - bobo老师的玩转算法系列–玩转数据结构 - 栈和队列 栈的实现 Stack<E> void push(E) E pop() E peek() int getSize() b ...
- RCE - Pikachu
概述: 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口 比如我们常见的路由器.防火墙.入侵检测等设备的web管理界面上 一般会给用户提供一个ping操 ...
- eCATT使用前的配置
如果想在SAP中使用eCATT,必须做一下相关的配置才行,下面简单介绍这几步:1.SM30,输入表T000,然后点击维护,或者是进入事物SCC4,进入对应的clint属性编辑视图下,将CATT and ...
- There are only two hard things in Computer Science: cache invalidation and naming things.
TwoHardThings https://martinfowler.com/bliki/TwoHardThings.html https://github.com/cch123/golang-not ...
- A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-number-cipher
A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-nu ...
- 服务器端IO模型的简单介绍及实现 阻塞 / 非阻塞 VS 同步 / 异步 内核实现的拷贝效率
小结: 1.在多线程的基础上,可以考虑使用"线程池"或"连接池","线程池"旨在减少创建和销毁线程的频率,其维持一定合理数量的线程,并让空闲 ...
- LDAP学习
.top pre { display: block; background: rgba(68, 67, 65, 1); color: rgba(255, 255, 255, 1); margin: 1 ...
- Redis集群拆分原则之AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...