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(优先队列+重载)的更多相关文章

  1. 优先队列重载运算符< 以及初始化列表

    优先队列定义 priority_queue<int, vector<int>, greater<int> >pq; 优先队列重载<运算符 在结构体中定义一个 ...

  2. 优先队列重载<运算符

    https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...

  3. Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925

    题目传送门 本来是照着二叉堆的题去做的...没想到捡了个模拟...不过模拟我都不会...我好弱啊... 其实核心代码并不长,比辰哥的标程短到不知哪里去...但是思路需要清晰. 读题的时候我明白,当有优 ...

  4. STL优先队列重载

    priority_queue默认是大根堆,如果需要使用小根堆,如下 int main(){ priority_queue<int,vector<int>,greater<int ...

  5. dij最短路优先队列堆的时候,加边

    不能用全局数组d[u]>d[rhs.u]. 这样后面会修改d[u]值然而本来里面的点顺序不该修改,却被修改了. 应该用栈还存进去的临时变量,比如d>rhs.d. 优先队列重载小于号'< ...

  6. poj 3013 Big Christmas Tree (最短路径Dijsktra) -- 第一次用优先队列写Dijsktra

    http://poj.org/problem?id=3013 Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total S ...

  7. poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)

    http://poj.org/problem?id=2449 Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Subm ...

  8. 倒水问题 (FillUVa 10603) 隐式图

    题意:本题的题意是给你三个杯子,第一二个杯子是空的,第三个杯子装满水,要求是量出一定容量d升的水.若是得不到d升的水,那就让某一个杯子里面的水达到d',使得d'尽量接近d升. 解题思路:本题是给出初始 ...

  9. POJ 3190

    POJ3190                               摊位预订.时间限制:1000MS内存限制:65536K.共提交材料:12959份接受:4 546名特别法官.描述. 哦,那些 ...

随机推荐

  1. RSA非对称 私钥加密

    RSA生成公钥和私钥对 /// <summary> /// RSA生成公钥和私钥 /// </summary> /// <returns></returns& ...

  2. C# vb .net实现倾斜效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的倾斜效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...

  3. 【开发工具】- 设置Sublime支持韩文展示

    菜单栏 --> 首选项 --> 设置 -->User 添加以下代码 { "font_size": 12, "show_encoding":tr ...

  4. Windows VNC远程连接用法

    VNC (Virtual Network Console)是虚拟网络控制台 被控端 被控端需要打开服务,等待主控端连接 服务端已经启动成功,右下角有小图标 主控端 打开主控端,连接被控端 输入被控端i ...

  5. Java 递归方法

    递归:在一个方法体内,调用自身,一般要有出口. 实例:已知一个数列,f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),其中n为大于等于0的整数,求f(10)的值. package ...

  6. 2.live555源码分析----服务端doEventLoop()函数分析

    上一篇博客说道,live555服务端main函数做的最后一件事就是调用如下代码陷入死循环: env->taskScheduler().doEventLoop(); // does not ret ...

  7. vue中使用echart柱状图

    一: <template> <Layout> <Content> <Card :style="{minHeight:'300px'}"&g ...

  8. Linux 文件监控之谁动了我的奶酪

    有时候配置文件会被莫名其妙的修改,但是找不到修改他的进程,从而无法抓住罪魁祸首,这时候就诞生了摄像头.呃呃,应该是audit 比如我要监控一个文件test.txt [root@hsun /]# aud ...

  9. python+正则+多进程爬取糗事百科图片

    话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...

  10. LGOJP1850 换教室

    题目地址 https://www.luogu.org/problem/P1850 题解 这题的转移其实挺好想的但是方程特别长...真的特别长... 首先设\(f[i,j,0/1]\)表示当前在第\(i ...