zoj3699Dakar Rally
开两个队列 一个维护价格从大到小用来每次更新买油的价格 让每次都加满 如果当前价格比队列里的某价格低的话就更新 另开以优先队列维护价格由小到大
来更新此时用的油是什么油价的 并减掉
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 100010
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
LL m[N],co[N],pr[N];
LL o[N];
int main()
{
int i,j,n,t,c;
cin>>t;
while(t--)
{
cin>>n>>c;
memset(o,,sizeof(o));
priority_queue <LL> q;
priority_queue<LL, vector<LL>, greater<LL> > p;
for(i = ; i <= n ;i++)
cin>>m[i]>>co[i]>>pr[i];
int flag = ;
int ts = ;
LL sum = ;
for(i = ; i <= n ;i++)
{
if(m[i]*co[i]>c){flag = ;break;}
int s = ;
while(!q.empty()&&pr[i]<=q.top())
{
sum-=o[q.top()]*q.top();
s+=o[q.top()];o[q.top()] = ;q.pop();
}
o[pr[i]] = s+c-ts;
if(o[pr[i]])
{
sum+=o[pr[i]]*pr[i];
q.push(pr[i]);
p.push(pr[i]);
}
LL ss = m[i]*co[i];
ts=c-ss;
while(ss)
{
int k = p.top();
if(o[k]<=ss)
{
ss-=o[k];o[k] = ;
}
else
{
o[k]-=ss;ss = ;
break;
}
p.pop();
}
}
if(!flag)
{
puts("Impossible");
continue;
}
while(!q.empty())
{
int k = q.top();
sum-=o[q.top()]*q.top();
q.pop();
}
cout<<sum<<endl;
}
return ;
}
zoj3699Dakar Rally的更多相关文章
- ZOJ 3699 Dakar Rally
		
Dakar Rally Time Limit: 2 Seconds Memory Limit: 65536 KB Description The Dakar Rally is an annu ...
 - 【BZOJ-3832】Rally     拓扑序 + 线段树 (神思路题!)
		
3832: [Poi2014]Rally Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 168 Solved: ...
 - URAL 1227 Rally Championship(树的直径)(无向图判环)
		
1227. Rally Championship Time limit: 1.0 secondMemory limit: 64 MB A high-level international rally ...
 - 如何解决Rally模板提示angular js加载错误
		
[前言] Rally是一个开源测试工具,用于测试openstack各个组件的性能 在使用Rally测试完毕后,一般会生成测试报告,这点很重要.但是原生态的Rally报告模板angular js框架是从 ...
 - AtCoder Grand Contest 002 D - Stamp Rally
		
Description We have an undirected graph with N vertices and M edges. The vertices are numbered 1 thr ...
 - BZOJ3832[Poi2014]Rally——权值线段树+拓扑排序
		
题目描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byteburg are natural long di ...
 - 【BZOJ3832】[POI2014]Rally(拓扑排序,动态规划)
		
[BZOJ3832][POI2014]Rally(拓扑排序,动态规划) 题面 BZOJ,权限题 洛谷 题解 这题好强啊,感觉学了好多东西似的. 首先发现了一个图画的很好的博客,戳这里 然后我来补充一下 ...
 - 3832: [Poi2014]Rally
		
3832: [Poi2014]Rally 链接 分析: 首先可以考虑删除掉一个点后,计算最长路. 设$f[i]$表示从起点到i的最长路,$g[i]$表示从i出发到终点的最长路.那么经过一条边的最长路就 ...
 - Stamp Rally
		
Stamp Rally 最大值最小,可以二分,然后并查集看能不能到z个点 但是询问过多,并且发现每次二分要加入的点并不是所有的m条边 于是就考虑整体二分 并查集的处理是重点: 对于一般的dfs分治树, ...
 
随机推荐
- Structual设计--Bridge模式
			
1.意图 将抽象部分与它的实现部分分离.使他们都能够独立地变化. 2.别名 Handle/Body 3.动机 当一个抽象对象可能有多个实现时,通经常使用继承来协调它们.抽象类定义对该抽象的接口.而详细 ...
 - sqlzoo练习答案--SELECT within SELECT Tutorial
			
This tutorial looks at how we can use SELECT statements within SELECT statements to perform more com ...
 - codeforces 394E Lightbulb for Minister 简单几何
			
题目链接:点我点我 题意:给定n个点. 以下n行给出这n个点坐标. 给定m个点,以下m行给出这m个点坐标. 这m个点是一个凸包,顺时针给出的. 问:在凸包上随意找一个点(x, y) 使得这个点距离n个 ...
 - OpenGL在MFC中的使用总结(一)——基本框架
			
项目中要画3D显示的模型,于是要用到OpenGL,加上是在MFC中,并且是在MFC中的ActiveX中使用.再并且鉴于他们程序主框架的设定.常规的方法还不一定能实现.所以还是查过不少资料,在此一一总结 ...
 - Javascript中的apply、call、bind
			
apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...
 - mysql15--垂直分表水平分表
			
分表技术(表的结构不能变) 分表技术有(水平分割和垂直分割) 当一张越来越大时候,即使添加索引还慢的话,我们可以使用分表 以qq用户表来具体的说明一下分表的操作. 思路如图 : 首先我创建三张表 u ...
 - bzoj1934: [Shoi2007]Vote 善意的投票&&bzoj2768:[JLOI2010]冠军调查
			
get到新姿势,最小割=最大流,来个大佬的PPT 这道题的做法是将st和1的xpy连,0的xpy和ed连,xpy之间jy连双向边,然后呢答案就是最小割. #include<cstdio> ...
 - Python基础第七天
			
一.内容 二.练习 练习1 题目:编写函数,函数执行的时间是随机的 图示: 代码: import time import random def func(): s = 1 l = [] for i i ...
 - UI:sqlite数据库
			
使用sqllite的时候一些笔记 数据库(管理类),在工程 general 导入 动态链接库 libsqllite3.0.dylib 在.h文件里引入导入 sqllite3.h 头文件 在.h里面声 ...
 - UI:数据的解析
			
在懒加载的时候要注意事项: 必须使用 self.XX 的样式去开辟空间,不能使用 _XX 的格式去开辟,因为前者是内部的 set 方法,而后者并不走内部的 set 方法. json 文件的创建 xm ...