SuperHyperMarket(优先队列+重载)
具体见代码注释
/* */
#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#include <string>
#include <cmath>
#include <utility>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
const int inf=0x3f3f3f3f;
const double pi=acos(-1.0); int arr[maxn];
struct node
{
int mem;//该队的人数
int num;//该队的编号
int b1,b2;//该队的最后两个人
int pi;//下一个人计算的花费
bool operator<(const node &a)const//重载,从小到达排,先出队小的
{
if( a.pi==pi ) return num>a.num;//编号小的
return pi>a.pi;//花费小的
}
} p[maxn];
priority_queue<node> q;
int loc[maxn];//标记所要去的队 int main()
{
int n,k;
cin>>n>>k;
for(int i=; i<=n; i++) scanf("%d",&arr[i]);
for(int i=; i<=k; i++) //初始化
{
p[i].b1=p[i].b2=;//the last purchase people
p[i].mem=p[i].pi=;
p[i].num=i;//编号
q.push(p[i]);
} for(int i=; i<=n; i++)
{
node x=q.top();
loc[i]=x.num;
q.pop();
x.mem++;
x.b2=x.b1;
x.b1=arr[i];
if( x.mem== )
{
x.pi=*arr[i];//化除为乘防止精度缺失
}
else
{
x.pi=x.mem*(x.b1+x.b2);//化除为乘防止精度缺失,所以不除2
}
q.push(x);
}
for(int i=; i<=n; i++)
{
if(i==n) printf("%d\n",loc[i]);
else printf("%d ",loc[i]);
}
return ;
}
SuperHyperMarket(优先队列+重载)的更多相关文章
- 优先队列重载运算符< 以及初始化列表
优先队列定义 priority_queue<int, vector<int>, greater<int> >pq; 优先队列重载<运算符 在结构体中定义一个 ...
- 优先队列重载<运算符
https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...
- Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925
题目传送门 本来是照着二叉堆的题去做的...没想到捡了个模拟...不过模拟我都不会...我好弱啊... 其实核心代码并不长,比辰哥的标程短到不知哪里去...但是思路需要清晰. 读题的时候我明白,当有优 ...
- STL优先队列重载
priority_queue默认是大根堆,如果需要使用小根堆,如下 int main(){ priority_queue<int,vector<int>,greater<int ...
- dij最短路优先队列堆的时候,加边
不能用全局数组d[u]>d[rhs.u]. 这样后面会修改d[u]值然而本来里面的点顺序不该修改,却被修改了. 应该用栈还存进去的临时变量,比如d>rhs.d. 优先队列重载小于号'< ...
- poj 3013 Big Christmas Tree (最短路径Dijsktra) -- 第一次用优先队列写Dijsktra
http://poj.org/problem?id=3013 Big Christmas Tree Time Limit: 3000MS Memory Limit: 131072K Total S ...
- poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
http://poj.org/problem?id=2449 Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Subm ...
- 倒水问题 (FillUVa 10603) 隐式图
题意:本题的题意是给你三个杯子,第一二个杯子是空的,第三个杯子装满水,要求是量出一定容量d升的水.若是得不到d升的水,那就让某一个杯子里面的水达到d',使得d'尽量接近d升. 解题思路:本题是给出初始 ...
- POJ 3190
POJ3190 摊位预订.时间限制:1000MS内存限制:65536K.共提交材料:12959份接受:4 546名特别法官.描述. 哦,那些 ...
随机推荐
- MyBatis返回结果类型为Boolean
问题描述: 在使用MyBatis时,有时需要检查某个记录是否存在数据库中,然后根据其返回的布尔值true or false,来进行逻辑判断.那怎么做呢? 解决方案: 如检测某个手机号是否 ...
- java之hibernate之加载策略和抓取策略
1.加载策略:指hibernate查询数据时,采用什么样的方式将数据写入内存.Hibernate中提供了两种方式来加载数据:懒加载和即时加载. 2.懒加载又称延迟加载,指使用hiberante API ...
- 【转载】C#中使用decimal.TryParse方法将字符串转换为十进制decimal类型
在C#编程过程中,将字符串string转换为decimal类型过程中,时常使用decimal.Parse方法,但decimal.Parse在无法转换的时候,会抛出程序异常,其实还有个decimal.T ...
- 用java语言将数据库中的数据表转换为xml文件的通用程序(细化)
转自:https://www.cnblogs.com/wudage/p/7650685.html 总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要 ...
- 深入理解JVM-java内存区域与内存溢出异常
1.内存模型概述 2.运行时数据区 2.1.程序计数器 理解: 1.什么是程序计数器 2.线程私有还是共享 引入难点: 理解什么是 native方法 简单地讲,一个Native Method就是一个j ...
- js switch case 判断的是绝对相对===,值和类型都要相等
js switch case 判断的是绝对相对===,值和类型都要相等
- springboot通过idea打jar包
springboot打jar包 一. 检查pom文件 <packaging>jar</packaging> 二. 切换到maven窗口 三. 先c ...
- Linux设备管理——sysfs、udev
What is the use of Sysfs sysfs is a pseudo file system provided by the Linux kernel that exports inf ...
- Python_soket
1.socket建立连接,服务端,客户端代码如下: import socket #服务端,AF_INET:IPV4地址,SOCK_STREAM:TCP协议 sk=socket.socket(socke ...
- Linux服务-bind
目录 1.安装bind 2.配置bind 3.添加正.反向解析域 3.1 指向生效的配置文件 3.2 生成配置文件cljhfy.com.zone和163.168.192.zone 4.验证 Linux ...