cf536b——优先队列的运用
2024-09-08 03:42:28
题目
题目:cf536 B题
题目大意:一个饭店有n种食物,每种食物有对应的价格和数量,然后有m个顾客,每个顾客需要$d_j$份第$t_j$种食物,如果该种食物数量不够,则选其它尽可能便宜的代替(出现同样价格的应选索引最小的);如果所有的食物都不够该顾客,该顾客会吃完这些食物,并且不花钱。假设只有当前一个顾客服务完下一个才会来。
思路
模拟,根据题目所说的去做即可。唯一的困难是得到最便宜的食物,这需要对食物进行排序,由于同时还要记录原来的索引,所以用pair存储,放在优先队列中。
时间复杂度:$\mathcal{O}(m + n \log n)$
代码
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std; typedef long long LL;
typedef pair<int,int> PII; const int maxn = + ;
int n, m,r[maxn],c[maxn];
priority_queue<PII, vector<PII>, greater<PII>>Q; //优先第一维比较,第一维相同则根据第二维 int main()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++) scanf("%d", &r[i]);
for (int i = ; i <= n; i++)
{
scanf("%d", &c[i]);
Q.push(PII(c[i], i));
}
for (int i = ; i <= m; i++)
{
int t, d;
scanf("%d%d", &t, &d);
if (d <= r[t])
{
r[t] -= d;
printf("%lld\n", 1LL * d * c[t]);
}
else
{
bool flag = false;
LL ans = 1LL * r[t] * c[t];
d -= r[t];
r[t] = ;
while (!Q.empty())
{
while (!Q.empty() && r[Q.top().second] == ) Q.pop();
if (Q.empty()) break;
PII now = Q.top();
if (d <= r[now.second])
{
r[now.second] -= d;
ans += 1LL * d * now.first;
flag = true;
printf("%lld\n", ans);
break;
}
else
{
ans += 1LL * r[now.second] * now.first;
d -= r[now.second];
r[now.second] = ;
Q.pop();
}
}
if (!flag) printf("0\n");
}
}
return ;
}
参考链接:https://codeforces.com/blog/entry/64928
最新文章
- nodejs net模块
- 产品中 configure/cross compile的一个bug
- Docker + Consul 多数据中心模拟
- Mergely – 免费的在线文档对比和合并工具
- Android文件保存和读取
- .net core 中的序列化和反序列化
- mysql kill操作
- Struts2 教程
- xen credit scheduler and policy
- inode-软链接与硬链接
- HDU OJ 5441 Travel 2015online E
- Linux下给mysql创建用户分配权限
- kafka各个版本特性预览介绍
- day21-多并发编程基础(二)
- mysql 数据库主从同步
- Django学习笔记之视图高级-错误处理
- nginx代理 upstream轮询
- 【linux C】C语言中常用的几个函数的总结【一】
- python输出显示颜色
- MySQL keepalived 双主.md
热门文章
- 织梦仿站列表页pagelist分页显示竖排,如何修改成横排?
- web前端技术社区分享
- 并不对劲的bzoj3998:loj2102:p3975:[TJOI2015]弦论
- [Usaco2009 Dec] 过路费
- django flask缓存memcache的key生成方法介绍
- 洛谷 P1262 间谍网络 —— 缩点
- 【黑金教程笔记之004】【建模篇】【Lab 03 消抖模块之一】—笔记
- P2479 [SDOI2010]捉迷藏
- _bzoj1008 [HNOI2008]越狱【计数】
- d3学习笔记