2021牛客暑期多校训练营6 - F - Hamburger Steak( 构造 )

探索数据库领域 SQL 的 JSON 数据处理技巧 在当今数字化时代,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种领域,如 Web 应用、移动应用、大数据处理等。数据库作为数据存储和管理的核心,需要具备处理 JSON 数据的能力。本文章的目的在于深入探索 SQL 语言在数据库中处理 JSON 数据的技巧,涵盖从基础的 JSON 数据查询到复杂的 JSON 数据操作,帮助读者全面了解和掌握 SQL 处理 JSON 数据的方法。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

n 个汉堡,m 个锅,每个汉堡都有做熟所需时间 t i t_i ti​,一个汉堡可以在一个锅上做,也可以分两次在两个锅上做,一个锅每刻只能做一个汉堡,一个汉堡每刻只能在一个锅上。求一个汉堡放置方案,使所有汉堡做好所需时间最少( 这个所需时间,应该是所有汉堡都做完的那一刻时间 )

思路

我们求出锅的最大时间限制是多少,应该是 max ( n 个汉堡中的最长时间 ,n 个汉堡平均时间 ),我们知道一个锅最大时间是多少,剩下的就是贪心的放置汉堡,如果锅里放得下一整个汉堡,就放置,如果放不下,那就尽量放,这个汉堡剩下的那部分时间放到另一个新的锅里,重复过程,直到所有汉堡都放置结束。这样放置汉堡,一个汉堡的时间不会存在交集。因为 ti <= max,就算一个汉堡放到两个锅里,因为前半部分在锅后程,后半部分在锅前程,因此不会存在交集 ( 这里放置类似栈 )。

代码
//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=998244353;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,m,t[maxn],sum,maxx,maxt;
struct node
{
	int pos;
	int x;
}p[maxn];

struct Node
{
	int l;
	int r;
	int pos;
};

bool cmp(node e,node f)
{
	return e.x>f.x;
}
vector<Node>v[maxn];

signed main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>t[i],sum+=t[i],maxt=max(maxt,t[i]);
	for(int i=1;i<=n;i++) p[i].pos=i,p[i].x=t[i];
	if(sum%m==0) maxx=sum/m;
	else maxx=sum/m+1;
	maxx=max(maxx,maxt);
	//sort(p+1,p+n+1,cmp);
	int pos1=m,pos2=1;
	while(pos1>=1&&pos2<=n)
	{
		if(p[pos2].x==maxx)
		{
			v[p[pos2].pos].push_back({0,maxx,pos1});
			pos2++;
			pos1--;
		}
		else
		{
			int tmp=0;
			while(pos2<=n&&tmp+p[pos2].x<=maxx)
			{
				tmp+=p[pos2].x;
				v[p[pos2].pos].push_back({tmp-p[pos2].x,tmp,pos1});
				pos2++;
			}
			if(pos2<=n&&tmp!=maxx)
			{
				p[pos2].x-=(maxx-tmp);
				v[p[pos2].pos].push_back({tmp,maxx,pos1});
			}
			pos1--;
			
		}
	}
	for(int i=1;i<=n;i++)
	{
		cout<<v[i].size()<<" ";
		for(int j=v[i].size()-1;j>=0;j--)
			cout<<v[i][j].pos<<" "<<v[i][j].l<<" "<<v[i][j].r<<" ";
		cout<<endl;
	}
    return 0;
} 

SPICE仿真软件:HSPICE_(22).HSPICE仿真案例分析 通过上述案例分析,我们可以看到HSPICE仿真软件在不同电路类型和仿真场景中的应用。无论是简单的直流分析、交流分析还是复杂的暂态分析,HSPICE都能提供详细的仿真结果,帮助我们更好地理解和优化电路设计。希望这些案例能够为读者提供实用的参考和指导,进一步提升使用HSPICE进行电路仿真的能力。输入文件的编写:确保输入文件格式正确,使用注释来解释每一部分的内容。分析类型的选择:根据电路的特点选择合适的分析类型,如.DC.AC和.TRAN。输出结果的设置:使用.print命令来指定需要输出的节点电压和支路电流。 阅读详情

相关推荐

创客学院嵌入式驱动开发——学习资料汇总

1.创客学院知识巩固-01C语言回顾_C/C++_Set_Mode的博客-优快云博客https://blog.youkuaiyun.com/Set_Mode/article/details/94431050 2.创客学院知识巩固-02数据结构_Set_Mode的博客-优快云博客https://blog.youkuaiyun.com/Set_Mode/article/details/94431087 3.创客学院知...

snaking616 5116

Frying Hamburgers的问题

Fying Hamburgers:说是一共有n个汉堡需要经过油煎处理,然后有个烤架每次只能放置两个汉堡,每个汉堡的两面都需要油煎,在烤架上对一面进行油煎需要耗时1分钟,不管烤架上放置1个还是2个汉堡。我看的书中给的求解最小油煎时间的算法如下:如果n小于等于2,则把这1个或者2个汉堡放在烤架上两面都油煎就搞定了,耗时2分钟,如果n大于2,则先随机处理两个汉堡,耗时2分钟,然后递归处理剩余的n-2个汉

endoneendone的专栏 1507

DDR Study - LPDDR5 Power-Up and Initialization Sequence

本文深入解析LPDDR5内存的上电初始化流程,涵盖电源斜坡、复位信号释放和初始化训练等关键阶段。通过实际案例分享,详细探讨了电源轨时序、RESET信号处理、ZQ校准和CA总线训练等核心技术要点,帮助硬件工程师规避常见设计陷阱,确保DDR内存稳定运行。

weixin_42523792的博客 299

【CodeForces】【单调队列优化DP】939F Cutlet

CodeForces 939F Cutlet 题目大意 有一块牛排需要两面都需要煎 NNN 秒,现仅有 KKK 个时间段 [Li,Ri][L_i, R_i][Li​,Ri​] 可以用来翻面,其中每秒只能够翻一次。 问最少翻多少次使得牛排两面都煎了 NNN 秒。 分析 神奇的 DP。 定义状态 f(i,j)f(i, j)f(i,j) 为在前 iii 个时间段中,当前朝上的那一面已经被烤了 jjj 秒...

IDDFS 465

频谱分析常见坑:STM32的ADC采样+FFT处理时如何避免这5个错误

本文深入剖析了在STM32平台上进行ADC采样与FFT频谱分析时,工程师最常遇到的五个关键错误与性能陷阱。内容涵盖从采样频率设置、频谱泄露处理、ADC配置优化,到谐波识别校准及系统实时性设计,提供了详尽的避坑指南与实战调优策略,旨在帮助开发者构建稳定、精确的嵌入式频谱分析或波形识别系统。

7up55的博客 623

一文详细讲解CRM系统(附架构图、流程、功能介绍)

专为中小企业量身打造高性价比的数字化转型路径!企业如何用CRM才能真正做到降本增效?今天,就用一文讲清这些问题!读完本文,你将清楚得了解CRM的概念、框架、流程、功能、企业成功案例,文末还有常见问题解答。

Dabeishandong的博客 9925

[CF939F]Cutlet

一个字,强。 两个字,????????。 三个字,不得了!

七代目鸽影 279

别再为UE5像素流部署踩坑了!Windows服务器单实例保姆级避坑指南(含Node.js证书、coturn空文件夹等常见问题解决)

本文提供了UE5像素流在Windows服务器单实例部署中的全面解决方案,涵盖Node.js证书过期、coturn空文件夹等常见问题。通过详细的步骤指导和配置建议,帮助开发者高效完成部署,避免常见陷阱,特别适合局域网环境下的应用场景。

weixin_30315435的博客 462

2021牛客暑期多校训练营6

2021牛客暑期多校训练营6 文章目录2021牛客暑期多校训练营6C:Delete_Edges解释代码F:Hamburger_Steak解释代码H:Hopping_Rabbit解释代码I:Intervals_on_the_Ring解释代码J:Defend_Your_Country解释代码 C:Delete_Edges 解释 结论题。题目转换为从n个点中任意选择三个点,使得三个点不会重复出现的方案数。 输出 (x+y+z)%n==0,1<=x<y<z<=n(x + y + z) \%

qq_45604735的博客 255

AI脸部替换Roop-Unleashed,一键整合包教程

Roop-Unleashed是一个无须训练模型的深度伪造工具,专为图像和视频的面部替换而设计。它通过简洁的浏览器界面提供用户友好且跨平台的使用体验,无论用户是业余爱好者还是专业人士,都能快速上手。它无需复杂的设置即可实现高效的处理和转换,使图像和视频的编辑变得更加轻松和便捷。

m0_72580657的博客 1万+

领域驱动新实践:COLA框架全解析——架构设计与实战案例解析

定义订单支付事件java代码解读复制代码} }Order定义Order类,继承并实现支付逻辑:java代码解读复制代码} }定义接口:java代码解读复制代码定义类,处理订单支付逻辑并持久化:java代码解读复制代码} }定义和处理订单支付事件:java代码解读复制代码} }java代码解读复制代码} }定义和接口及其实现:java代码解读复制代码java代码解读复制代码。

2401_89221445的博客 2660

2021牛客暑期多校训练营6 F Hamburger Steak

H Hopping Rabbit 题目大意: 给定nnn个牛排,mmm个锅,每个牛排需要煎aia_iai​分钟,一个牛排可以一次煎,也可以分成两次煎,要求煎的总时间最小 构造一组方案,需要输出每个牛排,在几个锅(最多两个)里煎,要输出,在哪个锅煎,煎的开始时间,结束时间,同时满足时间总和最小 比赛时的错误想法大赏: 想法一:维护一个优先队列,从小到大放入牛排,满足优先队列大小为m,想将最大的m个按顺序装入,把优先队列装满后,在将剩余的牛排往优先队列中最小的加(动态) 然后是调整: 将所有的锅中的内容出队(从

lcl1234567890lcl的博客 196

VTK API 详解(134):vtkOBJWriter - 写入 OBJ 模型

是 VTK 中用于将数据写入 Wavefront OBJ 文件格式的类。OBJ 格式是广泛支持的 3D 网格模型格式,支持顶点、面和基本几何信息的保存,便于模型在多种三维软件间交换。

yumeiguo的博客 140

2021牛客暑期多校训练营6 - F(Hamburger Steak)

https://ac.nowcoder.com/acm/contest/11257/F 贪心 #include <iostream> using namespace std; typedef long long ll; ll n, m, t[100005]; int main(){ scanf("%lld%lld", &n, &m); ll sum = 0, mx = 0, tmax = 0; for (int i = 1; i <= n

多思考🤔~ 361

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Imprecise Computer - ( 思维 / 递推 )

题目描述 The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 i

Cosmic_Tree的博客 1528

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Going Home - ( 抽屉原理 )

题目链接:点击进入 题目 题意 给一个长度为 n 的数组,问是否存在 x , y , z , w ( 四个数互不相同 ) ,满足 a [ x ] + a [ y ] = a [ z ] + a [ w ] ; 思路 暴力枚举 x 与 y ,得出和值 C ,2 <= C <= 5e6。 有 n ^ 2 对( x , y ),和值 C 大约有 5e6 种取值,当 n ^ 2 > 5e6 时,根据抽屉原理,必有一个和值对应两个以上的( x , y )对,但是,此时可能对应的( x , y )

Cosmic_Tree的博客 1407

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ABC Conjecture(大数分解)-2020ccpc(威海)

题意 给你一个范围是 [ 1 , 10 ^ ​18​​ ] 的数,让你求这个数能不能被一个 素数的平方 整除(即 c % ( i * i ) == 0) 思路1 用大数分解模板,将 c 分解得到 c 的所有质因子,然后去重(模板得到的是无序且没去重的),然后将所有质因子相乘,得到 tmp , 如果 tmp 跟 c 相等,说明 c 不能被素数的平方整除,否则可以。 (记得特判 c == 1 的情况!!! c = 1 是 “ no ” ) 代码1 #include<iostream> #incl..

Cosmic_Tree的博客 1335

A Golden Spirit (思维)-2020ccpc(威海)

题意 一座桥,桥两侧各有 n 个人,每个人都想去桥对面休息 x 分钟后再返回(必须休息够 x 分钟才能被背回去),问你满足所有人的愿望,最少需要多少分钟(你背一个老人过一次桥需要 t 分钟) 思路 最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置,而此时每个人的休息所剩时间应该是: x x-2t x-4t … x-2*(n-1)t | x-t x-3t x-..

Cosmic_Tree的博客 1054

Gym - 103069B - Rectangle Flip 2( 暴力 + 思维 )

题目链接:点击进入 题目 题意 n * m 的网格,每秒删除其中一个小网格,问每秒后,还剩余多少个好的矩形 ( 只要是矩形,同时矩形内没有被删除的格子 ) 思路 蚌埠住啦,这题因为万恶的javaweb被我搁置了好久,我老早就想写了,难受≧ ﹏ ≦ 按照顺序删除点,对于每个删除的点,看会影响多少新矩形。思考一下(脑袋里构一下图),一个新删除的点,能影响到的,只能是以这个点x为中轴,上下每行左右扩到最大的部分(最大就是指碰到被删除的点,或者边界),这个上下每行也是在x轴上上下扩到最大的。我们若是确定每行能扩

Cosmic_Tree的博客 834

The number of steps(概率dp问题)

题目描述 Mary stands in a strange maze, the maze looks like a triangle(the first layer have one room,the second layer have two rooms,the third layer have three rooms …). Now she stands at the top point(the first layer), and the KEY of this maze is in the lowes

Cosmic_Tree的博客 805

Clock Master(分组背包)-2020ccpc(威海)

题意: T 组样例,每组给一个 n ,范围是 [ 1 , 30000 ] ,要求将 n 分解成: n = a1 + a2 + … + am ( m 没有限制 ),使得(a1 + a2 + … + am)的最小公倍数最大,输出这个最大值的对数。 思路: 将题目转换一下,就变成了将n分解,分解成 使得 尽可能的大。同时答案是要求输出这个最大值的对数,这个式子又转换为 有 k 种(组)素数,每种(组)素数只能选择一个幂次( p ^ ( ei )) ,第i个数的容量是 p ^ ( ei ),价值是log (.

Cosmic_Tree的博客 799

Chat Group -( 组合数 + 乘法逆元 )

题目链接:点击进入 题目 题意 n 个人, >= k 人就可以组成一个小组,问能组成多少个小组 思路 答案 = c ( n , k ) + … + c ( n , n ) = 2 ^ n - ( c ( n , 0 ) + … + c ( n , k - 1 ) ) c ( n , i ) = c ( n , i - 1 ) * ( n - i + 1 ) / i i 的逆元: 1 / i = i ^ ( mod - 2 ) 代码 #include<iostream> #includ

Cosmic_Tree的博客 693

HDU - 5256-序列变换(求最长严格递增子序列)

题目连接:点击进入 题意 一个数列,要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。输出最少需要修改多少个元素。 思路 求最长的严格递增子序列 (O ( N ^ 2 ) 会 T , 所以用 O( N lg N)的 - - 二分查找) 这里解释一下对于初始的序列 a [ i ] 的偏移(也就是令 a [ i ] = a [ i ] - i) 因为严格递增要满足 a [ i ] - a [ j ] >= i - j , 即 a [ i ] - i >=

Cosmic_Tree的博客 657

What Goes Up Must Come Down(树状数组求逆序对)

题意 给你一个长度为n的数字序列,你每次可以交换任意两个相邻的数字,让你求出达到目标序列(前面不递减,后面不递增) 思路

Cosmic_Tree的博客 644

L3-011 直捣黄龙(最短路+dfs路径回溯)

题目链接:点击进入 思路 最短路+dfs路径回溯,不难,但是我被卡了,没看出来最短距离相等时,路径数应该是两者相加(我记得我之前做这类的题目的时候也是这里被卡,我真是猪脑子(* ̄(oo) ̄))。。。写博客纪念一下o(╥﹏╥)o 代码 #include<iostream> #include<cstring> #include<queue> #include<map> #include<cstdio> #define pii pair<int,i

Cosmic_Tree的博客 620

Gym - 102483G Game Design( 思维 + 模拟 )

题目链接:点击进入 题目 题意 思路 代码 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int maxn=1e6+10; const int base=1001; int pos[maxn]; string s; vector<pii>v; void print(int x,int y) { cout<<(-x)<<" "<&

Cosmic_Tree的博客 600
上一篇: Gym - 102001H Lexical Sign Sequence( 树状数组 + 构造 )
下一篇: 计算机算法设计与分析第一章思维导图
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值