nocow
http://www.nocow.cn/index.php/Heap_Pascal
=w= c++ 自带堆
栗子
【2235烤鸡翅】
http://cojs.tk/cogs/contest/problem.php?ctid=303
[题解]
对于当前的一个顾客i
1.剩余鸡翅足够,卖给他
2.剩余鸡翅不够,选择已卖出的人中所需鸡翅最多的人j,
如果 鸡翅i<鸡翅j 那么替换 ,人数不变,且剩余鸡翅增加
[代码]
var
n,i,y,max,d,ren,r:longint;tot:int64;
x,que:array [0..250010]of longint;
procedure swap(x,y:longint);var i:longint;begin
i:=que[x]; que[x]:=que[y]; que[y]:=i;
end;
procedure insert(y,x:longint);begin
que[x]:=y;
while (x>1)and(que[x]>que[x div 2]) do
begin
swap(x,x div 2);
x:=x div 2;
end;
end;
procedure down;var i,j:longint;begin
i:=1;
if i*2+1<=r then
begin
if que[i*2]>que[i*2+1] then j:=i*2 else j:=i*2+1;
end
else if i*2<=r then j:=i*2 else exit;
while que[i]<que[j] do
begin
swap(i,j);
i:=j;
if i *2+1<=r then
begin
if que[i*2]>que[i*2+1] then j:=i*2 else j:=i * 2+1;
end
else if i *2<=r then j:=i *2 else exit;
end;
end;
begin
assign(input,'wing.in');reset(input);
assign(output,'wing.out');rewrite(output);
read(n);
tot:=0; r:=0;
for i:=1 to n do read(x[i]);
for i:=1 to n do
begin
inc(tot,x[i]);
read(y);
if tot>=y then
begin
inc(r);
insert(y,r);
dec(tot,y);
inc(ren);
end else
begin
if que[1]>y then
begin
inc(tot,que[1]-y); que[1]:=y; down;
end;
end;
end;
write(ren);
close(input);close(output);
end.
分享到:
相关推荐
二叉堆、二项堆和斐波那契堆是数据结构中的重要概念,它们都是堆数据结构的不同变体,主要用于高效地实现某些特定操作,如查找最大或最小元素、优先队列以及各种排序算法。在C++编程语言中,理解和实现这些堆结构...
dijkstra算法的三种实现:数组,二叉堆,斐波那契堆 + 部分实验报告 dijkstra算法的三种实现:数组,二叉堆,斐波那契堆 + 部分实验报告 dijkstra算法的三种实现:数组,二叉堆,斐波那契堆 + 部分实验报告
集团型企业网设计案例(VRRP+MSTP+堆叠+链路聚合)含有配置参考脚本
H3C 集团型企业网设计案例(VRRP+MSTP+堆叠+链路聚合)by肖哥
本文将介绍顺序表、链表、栈、队列、堆、二叉树、常见排序算法、Map 和 Set 的基本概念、实现代码及其应用场景。这些数据结构和算法是编写高效程序的基础,对于理解和解决复杂问题非常重要。 1.顺序表 (ArrayList): ...
### 堆优化的Dijkstra算法(Dijkstra+邻接表+Heap) #### 算法概述 Dijkstra算法是一种用于解决单源最短路径问题的著名算法,它能够找到图中某一点到其他所有点的最短路径。在处理大规模数据时,原始的Dijkstra...
分别实现插入排序、冒泡排序、堆排序、合并排序、快速排序,以不同规模(100,1000,2000,5000,10000,100000个数据)的随机数作为测试数据集,分别设置比较操作计数器,验证各个算法随着测试数据集增加比较次数的变化趋势
学习笔记
广域网框架+SDN+交换机堆叠+企业级架构扫盲 安德+军哥等 乾颐堂技术大咖茶茶话会
【标题】"DISM++ 电脑清理"是一个实用的系统维护工具,专为优化和清理个人计算机设计。这款软件能够帮助用户高效地清除电脑中的无用文件,提升系统的运行速度和性能。 【描述】"DISM++ 电脑清理"功能强大,主要针对...
4. **排序**:排序是对一组数据进行排序的过程,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。不同的排序算法有不同的时间复杂度和空间复杂度,需要根据具体应用场景选择。 5. ...
【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图-附件资源
最短路算法进阶(链式前向星+堆优化+SPFA) 本文主要介绍了最短路算法的进阶知识,包括链式前向星、堆优化和SPFA算法的应用。 一、链式前向星 链式前向星是一种存图方式,用于存储有向图中的边信息。这种存图方式...
基于Matlab绘图复刻堆叠柱状图+哑铃图完整源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于Matlab绘图复刻堆...
软件版本:Axure8(兼容Axure9/10) 常见用例 表格合集(增、删、查、分页)、带图列表展示(Web端+移动端)、双向列选择、二级菜单、列表操作(拖动、编辑)、标签分类筛选...柱状图、条形图、堆叠图、散点图、漏斗图
堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法...
其中,STL是C++标准库的核心部分,它包括向量(vector)、列表(list)、映射(map)、集合(set)、队列(queue)、堆(priority_queue)等数据结构,以及各种算法(如排序、查找、变换等)。libstdc++-6.dll的存在...
5. **多文档界面**:Notepad++支持同时打开多个文档,方便进行多文件比较和编辑,窗口可以独立排列或堆叠显示。 6. **插件系统**:Notepad++的一大亮点是其强大的插件系统,用户可以通过安装各种插件扩展其功能,如...
钢铁侠-核反应堆-html+css
1、资源内容:基于Matlab绘图复刻堆叠柱状图+哑铃图(完整源码+报告+数据).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等专业的大学生...