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名特别法官.描述. 哦,那些 ...
随机推荐
- navicat连接mysql出现2059
1.找到mysql的目录:C:\Program Files\MySQL\MySQL Server 8.0\bin 2.清空此目录,输入cmd,回车 3.在控制台输入:mysql -u root -p ...
- TCP,UDP 通讯的helper类
使用Tcp通讯,首先要启动tcp服务端监听客户端,客户端发送消息,服务端收到消息 1.服务端代码如下 public class TcpServerTest { public async Task Be ...
- websocket-shap 函数Broadcast的使用方法
Broadcast:在websocket-shap函数的定义是:向WebSocket服务中的每个客户端发送数据,类似于广播的效果 如果要使用异步发送,可使用BroadcastAsync函数. 在源码中 ...
- Maven:浅析依赖(dependency)关系中 scope 的含义
在 Pom4 中,dependency 元素中引入了 scope 元素,这是一个很重要的属性.在Maven 项目中 Jar 包冲突.类型转换异常的很大原因是由于 scope 元素使用不当造成的. sc ...
- feign.FeignException: status 400 reading
feign.FeignException: status 400 reading : 请求方调用报错: 服务方被调用报错: 用fegin给redis设置缓存时报错,刚好 卡到8k这个临界点 ,就一直报 ...
- python 基础(集合)
#set里的元素是唯一的,即没有重复的,可以用set()函数,去数据的重复冗余 L = [1,1,1,2,4,5,6,7] S = set(L) print(S) #打印结果{1, 2, 4, 5, ...
- Mysql中类似于oracle中nvl()函数的ifnull()函数
IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. my ...
- 快数据时代下,Moka携手DataPipeline提升招聘效能
新时代下,招聘早已不再是过去被动式的流程管控行为,智能化的招聘技术被越来越多地运用到企业招聘中. 为能更好地帮助企业优化招聘渠道,提高招聘效率,提升雇主品牌,Moka从成立之初便秉承“简单”的逻辑,通 ...
- Linux内核:关于中断你需要知道的
1.中断处理程序与其他内核函数真正的区别在于,中断处理程序是被内核调用来相应中断的,而它们运行于中断上下文(原子上下文)中,在该上下文中执行的代码不可阻塞.中断就是由硬件打断操作系统. 2.异常与中断 ...
- php图片防盗链
利用.htaccess 重写规则防止图片被盗链 2. 找到httpd.conf 打开重写规则 3.