/*既然前一天的可以省下来给过后一天卖,那么就倒着卖,那么最后一天的只能在最后一天卖,如果可以卖完,还有可卖的名额,那么就从
倒数第二天取,如果卖不完只能丢掉,而且必定是尽量留到价格最高的那一天卖*/
/*HDU2385*/
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn=+;
struct N
{
int x,p,m;
bool operator<(const N &a) const
{
return p<a.p;
}
}node[maxn];
int main()
{
int i,n;
int t;
scanf("%d",&t);
priority_queue<N> q;
N a;
while(t--)
{
while(!q.empty()) q.pop();
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d%d%d",&node[i].x,&node[i].p,&node[i].m);
}
int p=,sum=;
for(i=n-;i>=;i--)
{
q.push(node[i]);//
sum=node[i].x;
while(!q.empty()&&sum!=)
{
a=q.top();//先找当天价格高的卖,里面存的是第i天以后的剩余名额
q.pop();
if(a.m>=sum)
{
a.m-=sum;
p+=a.p*sum;
sum=;
}
else
{
sum-=a.m;
p+=a.p*a.m;
a.m=;
}
if(a.m!=)
q.push(a);//如果还有空闲的名额,那么继续留着向前找
}
if(q.empty())//卖不完只能丢掉,因为是倒着卖的
sum=;
}
printf("%d\n",p);
}
return ;
}

HDU2385Stock的更多相关文章

随机推荐

  1. VS2012使用正则删除空行

    1:Ctrl + H 打开快速替换窗口 2:输入:^\s\S*$\n 3:点击使用正则替换的选项

  2. CodeSmith自动生成代码使用

    官网地址:http://www.codesmithtools.com/ CodeSmith开发系列资料总结 http://terrylee.cnblogs.com/archive/2005/12/28 ...

  3. 解决 Ubuntu 13.04 无法调节屏幕亮度的问题

    13.04与12.04大部分步骤是相同的,只是12.04的方法在13.04中失败了,所以还是有必要说明一下.我到电脑是宏碁AS4750G,硬盘安装系统后电源亮度无法调节. 解决方法如下: 终端输入代码 ...

  4. p​h​p​面​试​题​笔​试​题​ ​比较有用

    一.选择题1.php的源代码是 (A )A.开放的 B.封闭的 C.需购买的 D.完全不可见的2.php的输出语句是 ( C )A.out.print B.response.write C.echo ...

  5. 桥梁模式(Bridge)

    桥梁模式属于结构类的设计模式,示意结构图如下:

  6. 《Sqlserver》Javaweb项目链接sqlserver 2008R2时出现的一系列的错误

    好久没有弄java,玩eclipse了,最近因为小小的原因,参加一个比赛,不得不把javaweb的东西又捡起来,所以不熟悉,再加上之前链接数据库都是用Oracle的,现在公司的电脑上又只是安装了sql ...

  7. 深入java虚拟机(二) 对象的创建

    java创建对象通常的方式是使用new指令,虚拟机会首先检查new指令的参数(也就是new关键字后面跟着的类名)是否能够在常量池中找到一个类的符号引用,并根据这个符号引用检查其代表的类是否已经加载.解 ...

  8. 网络虚拟化之FlowVisor:网络虚拟层(下)

    在前面两篇文章:网络虚拟化之FlowVisor:网络虚拟层(上)和网络虚拟化之FlowVisor:网络虚拟层(中)中分别介绍了FLowVisor的特性和实现,三连载的最后一篇介绍虚拟网络的隔离机制. ...

  9. oracle的order by decode根据文字自定义排序的例子

    oracle的order by decode根据文字自定义排序的例子: order by decode(t.title, '当前生效预警', 1, '今日即将生效', 2, '明日预计生效', 3, ...

  10. JS中:数组和二维数组、MAP、Set和枚举的使用

    1.数组和二维数组:   方法一: var names = ['Michael', 'Bob', 'Tracy']; names[0];// 'Michael' 方法二: var mycars=new ...