1004 Packets

一道贪心题,思路好想,不过细节有点多

自行百度题解

附上一个dalao代码

#include<stdio.h>
int main()
{
	int n,a,b,c,d,e,f,x,y;
	int u[4]={0,5,3,1};
	while(1)
	{
		scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
		if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
			break;
		n=d+e+f+(c+3)/4;//懂了
		y=5*d+u[c%4];//在已有n个的情况下,能装下y个2*2的
		if(b>y)
			n+=(b-y+8)/9;//把多的2*2的弄进来
		x=36*n-36*f-25*e-16*d-9*c-4*b;
		if(a>x)
			n+=(a-x+35)/36;//把1*1的弄进来
		printf("%d\n",n);
	}
	return 0;
}

在附上我的辣鸡代码以作比较,有很多没有的代码,但是这些没用的代码让思路更清晰

#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<algorithm>
#include<queue>
#include<ctime>
#include<cstring>
#include<stdlib.h>
#include<map>
using namespace std;
int size[7],num,scrap[7],cost,go,i;
void cut(int x)
{
	if(x == 2)
	{
		if(size[2] > scrap[2]) 
		{		
			size[2] -= scrap[2];
			scrap[2] = 0;
		}
		else 
		{
			scrap[2] -= size[2];
			size[2] = 0;
			scrap[1] += scrap[2]*4;
			scrap[2] = 0;                              
			cut(1);
		}
		return ;                   //1. 防止运行上面代码后,x恰好变为1
	}
	if(x == 1)
	{
		if(size[1] > scrap[1])
		{
			size[1] -= scrap[1];
			scrap[1] = 0;
		}
		else 
		{	
			scrap[1] -= size[1];
			size[1] = 0;
		}
	}
}
int main()
{
	//freopen("1.in","r",stdin);
	//freopen("1.out","w",stdout);
	while(1)
	{
		num = 0;
		go = 0;
		memset(scrap,0,sizeof(scrap));
		for(i = 1;i <= 6;i ++)
		{
			scanf("%d",&size[i]);
			if(size[i] != 0) go = 1;
		}
		if(!go) break;
		
		num += size[6];
		size[6] = 0;
		
		num += size[5];
		scrap[1] += size[5]*11;
		cut(1);
		size[5] = 0;
		
		num += size[4];
		scrap[2] += size[4]*5;
		cut(2);
		size[4] = 0;
		
		num += size[3]/4;
		size[3] %= 4;
		if(size[3]) num ++;
		if(size[3] == 1)
		{
			scrap[2] = 5;
			scrap[1] = 7;
			cut(2);
		}
		if(size[3] == 2)
		{
			scrap[2] = 3;
			scrap[1] = 6;
			cut(2);
		}
		if(size[3] == 3)
		{
			scrap[2] = 1;
			scrap[1] = 5;               //4.   数错数了.....数成了4
			cut(2);
		}
		size[3] = 0;
		
		num += size[2]/9;
		size[2] %= 9;
		if(size[2]) 
		{
			num ++;
			scrap[1] += (9-size[2])*4;    //3.这个必须在size[2]!=0 的前提下
		}
		cut(1);
		size[2] = 0;
		
		num += size[1]/36;      
		size[1] %= 36;                //2.zz一般的忘了处理size
		if(size[1]) num ++;
		
		printf("%d\n",num);
	}
	//fclose(stdin);fclose(stdout);
	return 0;
}


内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
Softnet packets(软身网络包)是一种网络传输中的数据包,用于在软件层面对网络数据进行处理和传输。Softnet packets的概念是建立在软件定义网络(Software Defined Networking,SDN)的基础上的,即将网络功能和控制从传统的硬件设备中分离出来,通过软件来实现对网络的管理和控制。 Softnet packets的处理方式相对于传统的硬件处理方式更加灵活和可编程。它可以通过编写相应的软件程序来定义和修改网络流量的路由、转发、过滤等行为,满足不同的网络需求和应用场景。与此同时,Softnet packets还可以根据网络负载和性能的优化策略,动态地分配网络资源,提高网络的吞吐量和性能。 Softnet packets的优势在于其灵活性和可扩展性。通过软件定义的方式,网络管理人员可以更加精确地配置和管理网络流量,实现对网络的精细化控制。同时,Softnet packets的虚拟化特性也使得网络资源的使用更加高效,节约了成本和能源。此外,软件定义的网络还可以与其他技术和系统相结合,例如网络功能虚拟化(Network Function Virtualization,NFV)和云计算,实现更加智能和高效的网络管理和应用部署。 总之,Softnet packets是一种通过软件定义网络来处理和传输数据的方式,具有灵活性、可编程性和可扩展性的优势。它可以实现对网络流量的精细化控制,优化网络资源的使用,提高网络性能和吞吐量,为网络管理和应用部署带来了更大的便利和效益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值