#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int N=10005;
priority_queue<int,vector<int>,greater<int> > h;
long long ans;
int c[N],y[N];
int n,s,tmp;
int main() www.2cto.com
{
int i;
freopen("in.txt","r",stdin);
scanf("%d%d",&n,&s);
for (i=1;i<=n;i++)
scanf("%d%d",&c[i],&y[i]);
ans=0;
for (i=1;i<=n;i++)
{
tmp=c[i];
if (h.size()>0) tmp=min(tmp,h.top()+i*s);
ans+=(long long)tmp*y[i];
h.push(c[i]-i*s);
}
cout << ans << endl;
} POJ 2393(使用二叉堆来做)
最新推荐文章于 2021-09-11 15:30:31 发布
本文介绍了一个使用 C++ 实现的优先队列应用案例。通过读取输入文件,程序利用优先队列对一系列数据进行处理并计算总成本。此程序展示了如何定义和使用自定义比较器来实现最小堆,并将此应用于解决特定问题。
563

被折叠的 条评论
为什么被折叠?



