当前位置:网站首页>2020icpc亚洲区域赛(济南)M题Cook Pancakes(小根堆的应用)
2020icpc亚洲区域赛(济南)M题Cook Pancakes(小根堆的应用)
2022-08-03 17:46:00 【ZaneBobo】
一.题意:
你有一个锅,锅的容量是k个饼,就是可以同时煎k个饼的一面,你有n个饼需要煎双面,饼面煎熟需要1小时,问你使用容量为k的锅去煎n个饼至少需要几小时。
二.用小根堆的目的(思路):
小根堆里面存0/1/2 0代表1面没煎过,1代表煎过一面,2代表这个饼已经煎完了。
优先煎煎过次数较少的饼
使得每次剩下两面都没煎的饼尽量少(这样的话剩余的同类面(在一个饼上,不能同时煎的面)就会尽量少)这样的话就能够充分利用锅,可以尽可能的一次煎多个饼的面。
三.代码:
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int N=100;
priority_queue<int,vector<int>,greater<int>> heap;//小根堆形式
int main()
{
int n,k;
cin>>n>>k;
if(n<=k)//如果这样的话,如果进入下面的小根堆循环,就会是1
//因为如果容量大于个数的话,两个同类面会同时煎
{
cout<<2<<endl;
return 0;
}
for(int i=1;i<=n;i++)
{
heap.push(0);
}
int h=0;
while(heap.top()<2)
{
int t=k;
while(t--)
{
heap.push(heap.top()+1);
heap.pop();
}
h++;
}
cout<<h<<endl;
}我那年的集训队面试题,真是怀念qwq。
边栏推荐
- TiFlash 计算层概览
- Weekly recommended short video: In order to fill the gap of learning resources, the author specially wrote a book?
- 【数仓】数据质量监控
- JS string to GBK encoding ultra-reduced implementation
- three.js简介
- 云图说丨初识华为云微服务引擎CSE
- pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
- WebGL管网展示(及TubeGeometry优化)
- PMP考试通关宝典-敏捷专题
- 开篇-开启全新的.NET现代应用开发体验
猜你喜欢
随机推荐
软件盘点企业使用服装ERP的好处
工程仪器设备在线监测管理系统常见问题和注意事项
【机器学习】机器学习基本概念/术语3
401. Binary Watch
cell delay和net delay
BigInteger :new BigInteger(tokenJson.getBytes()).toString(16)什么意思
PTA递归练习
websocket Handshake failed due to invalid Upgrade header
六、用户身份认证
ATM银行系统(对象初级练习)
【白话模电2】二极管特性和分类
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
完整的搭建内网穿透ngrok详细教程(有图有真相)
es6新增-async函数(异步编程的最终解决方案)
mysql之的执行计划
Gson 学习笔记
【保姆级示例向】观察者模式
oracle 分组合并字段,每组行显示
2021年数据泄露成本报告解读
ICDAR competition technology sharing









