Cpp环境【Code[VS]5226】物品选取

Cpp环境【Vijios1093】文科生的悲哀 【问题描述】   化学不及格的Matrix67无奈选择了文科。他必须硬着头皮准备一次又一次的文科考试。   在这一学期一共有n次文科考试,考试科目有4种,分别为政治、历史、地理和综合。每次考哪一科是不定的,因此在考试前Matrix67不知道应该去复习哪一科的功课。他希望能预测出下一次可能考的科目。于是,他收集到了以往的文科考试的资料。从以往的考试中,他发现了这样几个规律:   1.如果这次考的是 阅读详情
【问题描述】      

  小沐同学确信所有问题都有个多项式时间算法,为了证明,他决定自己去当一次旅行商,在上路之前,小 X 需要挑选一些在路上使用的物品,但他只有一个 能装体积为 m 的背包。显然,背包问题对小沐来说过于简单了,所以他希望你来帮他解决这个问题。
  小沐可以选择的物品有 n样,一共分为甲乙丙三类:
  1.甲类物品的价值随着你分配给他的背包体积变化,它的价值与分配给它的体积满足函数关系式,v(x) = A*x^2-B*x,x表示分配给该物品的体积,为非负整数,A,B是每个甲类物品的两个参数。注意每个体积的甲类物品只有一个。
  2.乙类物品的价值 A和体积 B都是固定的,但是每个乙类物品都有个参数C,表示这个物品可供选择的个数。
  3.丙类物品的价值 A和体积 B也是固定的,但是每个丙类物品可供选择的个数都是无限多个。
  你最终的任务是确定小沐的背包最多能装有多大的价值上路。

【输入格式】  

  第一行两个整数 n,m,表示背包物品的个数和背包的体积;
  接下来 n行,每行描述一个物品的信息。第一个整数 x,表示物品的种类:
  若 x 为1表示甲类物品,接下来两个整数 A,B,为A类物品的两个参数;
  若 x 为2表示乙类物品,接下来三个整数 A,B,C。A表示物品的价值,B表示它的体积,C 表示它的个数;
  若 x 为3表示丙类物品,接下来两个整数A,B。A表示它的价值,B表示它的体积。

【输出格式】  

  仅一行为一个整数,表示小 X的背包能装的最大价值。

【输入样例】  

【样例1】
 1 0
 1 1 1

【样例2】
 4 10
 2 1 2 1
 1 1 2
 3 5 2
 2 200 2 3

【输出样例】  

【样例1】
 0

【样例2】
 610

【数据范围】  

对于50%的数据,只有乙和丙两类物品;
对于70%的数据,1<=n<=100, 1<=m<=500,0<=A,B,C<=200;
对于100%的数据,1<=n<=100, 1<=m<=2000,0<=A,B,C<=200;

【来源】

复赛模拟题
Code[VS]5226 原题传送矩阵
重庆一中题库 原题传送矩阵

【思路梳理】

  背包问题,互相伤害,乙丙显然是一样的思路很容易解决主要还是看甲类:枚举给甲类的第i样物品分配多少即可!!!
  可以证明的是:如果要选择某样甲类物品i,只要它的参数a[i].A是一个正数,那么显然选择其的体积越大,就越划算,换句话来说:这个物品一定。不严格证明如下:

当a[i].A是一个正数时,其价值与体积成二次函数关系:
    这里写图片描述
    定义域为该物品能够选取的体积,值域为其对应的价格

   根据初等数学知识可以知道,二次函数为凹函数,那么其选取的体积越大,价值也就越大是必然的,显然我们还可以根据图像知道斜率也随之增大,也就是说单位体积的价值在增大,那么选取x个单位体积的该物品一定比选取x-1个单位的该物品的结果更优。
这里写图片描述

可列出如下的状态函数&状态转移方程,时间复杂度这里写图片描述:

d(i,j)=从前i样物品中任意选择总体积不超过j的物品所能够形成的最大价值

d[i][j]=
Case1: max{ d(i-1,j-x)+a[i].A*x*x-a[i].B*x | 0<=x<=j,x代表选择分配的体积 }
Case2:max{d(i-1,j-k*a[i].B)+a[i].A*k | 0<=k<=min(a[i].C,j/a[i].B)}
Case 3: max( d(i-1,j-k*a[i].B)+a[i].A*k | 0<=k<=j/a[i].B )

【Cpp代码】
#include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 105
#define maxm 2005
using namespace std;
int n,m,d[maxm];
struct data
{
    int type,A,B,C;
}a[maxn];

void dp()
{
    //d(i,j)=从前i样物品中任意选择总体积不超过j的物品所能够形成的最大价值
    //          Case 1:  max{ d(i-1,j-x)+a[i].A*x*x-a[i].B*x | 0<=x<=j,x代表选择分配的体积  }
    //d(i,j)= { Case 2:  max{ d(i-1,j-k*a[i].B)+a[i].A*k     | 0<=k<=min(a[i].C,j/a[i].B)   }
    //          Case 3:  max( d(i-1,j-k*a[i].B)+a[i].A*k     | 0<=k<=j/a[i].B

    for(int i=1;i<=n;i++)
    {
        if(a[i].type==1)
        {
            for(int j=m;j>=0;j--)
            for(int x=j;x>=0;x--)
                d[j]=max(d[j],d[j-x]+a[i].A*x*x-a[i].B*x);
        }

        if(a[i].type==2)
        {
            for(int j=m;j>=0;j--)
            for(int k=a[i].C;k>=0;k--)if(j-k*a[i].B>=0)
                d[j]=max(d[j],d[j-k*a[i].B]+a[i].A*k);
        }

        if(a[i].type==3)
        {
            for(int j=a[i].B;j<=m;j++)
                d[j]=max(d[j],d[j-a[i].B]+a[i].A);
        }

    }

    cout<<d[m];
}

int main()
{
//  freopen("in.txt","r",stdin);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i].type);
        if(a[i].type==1)        scanf("%d%d",&a[i].A,&a[i].B);
        else if(a[i].type==2)       
        scanf("%d%d%d",&a[i].A,&a[i].B,&a[i].C);
        else if(a[i].type==3)       
        {
            scanf("%d%d",&a[i].A,&a[i].B);
            a[i].C=2005;//物品的体积至少为1,背包最大容积为2000,所以可以认为2005为无限个 
        }
    }

    dp();   

    return 0;
}
Cpp环境【NOI1994】【Vijos3266】最佳旅游路线 【问题描述】   某旅游景区的街道成网格状。其中东西向德街道都是旅游街,南北向的街道都是林荫道。由于游客众多,旅游街规定为单行道,游客在旅游街上只能从西向东走,在林荫道上则既可从南向北,又可从北向南走。   阿龙想到这个旅游街区游玩。他的好友阿福给了他一些建议,用分值表示所有旅游街相邻两个路口之间的街道值得游览程度,分值是从-100到100的整数,所有林荫道不打分。所有分值不能全是负分。 阅读详情

相关推荐

Cpp环境【POJ3623】【Usaco2007Dec】【Vijos2993】Best Cow Line, Gold 最佳队列[2]

POJ3623 Best Cow Line,Gold 原题Description 问题描述 FJ is about to take his N (1 ≤ N ≤ 30,000) cows to the annual”Farmer of the Year” competition. In this contest every farmer arranges his cows in a line an

天地皆逆旅,你我本行人。 783

Cpp环境【Uva815】【Vijos2776】洪水 Flood

【问题描述】   有一个n行m列的网格,每个格子是边长为10米的正方形,网格四周是无限高的墙壁,第i行第j列每个格子的海拔高度为h[i][j]。现在网格中有T立方米的水,请你计算网格中的水平面的海拔高度,以及有水格子数目。注意,在网格中,所有有水格子的水平面的海拔高度相同,所以有水格子的数量为海拔高度严格小于水平面高度的格子数目。【输入格式】   第一行整数n和m,表示网格有n行m列。

天地皆逆旅,你我本行人。 903

Cpp环境【Uva1160】【Vijos2806】易爆物

【问题描述】   有一些简单化合物,每个化合物都由两种元素组成(每个元素用一个数字表示)。你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上。但这里存在一个安全隐患:如果车上存在k个简单化合物,正好包含k中元素,那么他们将组成一个易爆的混合物。为了安全起见,每当你拿到一个化合物时,如果它和已装车的化合物形成易爆混合物,你就应当拒绝装车。编程输出有多少个没有装车的化合物。【输入格式

天地皆逆旅,你我本行人。 762

Cpp环境【Usaco 3.2.6】【Vijos1251】Павлов的香甜黄油

【问题描述】   农夫John发现了做出全威斯康辛州最甜的黄油的方法:把糖放在一片牧场上,他知道他所有的N只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。   农夫John很狡猾。就像以前的巴甫洛夫,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,好让他可以在晚上挤奶。   农夫John知道开始时,每只奶牛都在各自喜欢的牧场(一个牧场不一

天地皆逆旅,你我本行人。 859

YOLO26算法水面与液体识别+训练好的模型+393张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 52 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.8528** mAP50-95 | 0.3441 Precision | 0.7729 Recall | 0.8354 train/box_loss | 1.5367 train/cls_loss | 1.0228 val/box_loss | 1.6809 val/cls_loss | 1.1758 【训练过程分析】 我这次训练了52个周期,模型在训练初期确实收敛速度很快,前20个周期mAP50从0.74逐步提升至0.82,这说明模型开始适应数据集,学习到一些关键特征。但到第30个周期后,提升速度逐渐放缓,到了40个周期时,mAP50达到0.85,这个阶段的曲线走势有些像磨砂玻璃,平滑且不规则,后期更是趋于平缓,表明模型可能已经达到最优解,再继续训练可能会有少量提升但代价较大。整体而言,从loss曲线来看,训练集的box_loss和cls_loss在52个周期内分别从1.80和1.25降到1.54和1.02,下降曲线较为稳定,但到了后期,这两项指标下降幅度逐渐减缓,尤其cls_loss下降至1.10左右后趋于稳定,这可能是模型对训练数据已有了较强的泛化能力,但也提示我们分类的稳定性可能还欠些火候。 至于验证集的表现,box_lo... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

C#西门子上位机与PLC通讯++S7协议

支持S7-200,S7-300,S7-1200,S7-1500+使用技术C#+S7net

Cpp环境【POJ3258】【Usaco2006】【Vijos1329】River Hopscotch跳石游戏

Description 问题描述 Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. The excitement takes place on a long, straigh

天地皆逆旅,你我本行人。 754

MATLAB模拟6自由度无人机检查,具备干扰补偿、裂纹检测和自主复检功能。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Cpp环境【Uva1615】【Vijos2867】 freeway 高速公路

【问题描述】   BOB是一名优秀的工程设计师,他正在设计一条穿越的农村地区的高速公路。为了方便一些村庄的人安全而快捷穿越高速路,需要设计跨越高速公路的人行天桥。当然为了节约成本,BOB须尽量减少天桥的数量。  在BOB的设计图纸上,高速公路是一条长为L的线段,它的左端点是平面坐标系的原点,右端点是x轴正方向的某个点。所有村庄在坐标系中标记成点。  现在请你帮助BOB确定需要修建人行天桥的最少数

天地皆逆旅,你我本行人。 748

AI大模型医学影像诊断智能识别应用方案.pptx

AI大模型医学影像诊断智能识别应用方案.pptx

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

Cpp环境【POJ3069】【Vijos2995】 萨鲁曼的大军 Saruman's Army

【问题描述】   萨鲁曼的大军正行进在一条笔直的道路上,由于是在夜晚行军,路上的石头严重地影响了行军速度。于是萨鲁曼决定预先在道路上安装一些路灯,以便士兵们能清楚地看到所有石头。   萨鲁曼给出n块石头的位置Xi,现在需要在这些位置中选择若干个位置设置路灯。每盏路灯的照亮范围为R,即若你在Xi处设置了一盏路灯,则在[Xi-R,Xi+R]的范围内都会被照亮。   现在请你计算最少设置多少盏路灯

天地皆逆旅,你我本行人。 625

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

Cpp环境【Vijos3160】【NOIP Practice】病毒分裂

【问题描述】    A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。  这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期前,一共有多少

天地皆逆旅,你我本行人。 591

概率神经网络的分类预测-基于PNN的变压器故障诊断(Matlab代码实现)

内容概要:本文系统阐述了基于概率神经网络(PNN)的变压器故障诊断方法,结合Matlab代码实现分类预测。通过提取变压器运行过程中的关键特征参数,构建PNN模型以实现对正常状态与典型故障状态(如绕组短路、铁芯故障等)的高效分类识别。文章深入剖析了PNN的网络结构、概率密度估计原理、训练机制及分类决策过程,并通过仿真实验验证了该方法在故障诊断任务中具备较高的准确率与鲁棒性,展现了其在电力系统状态监测与智能运维中的良好应用前景。; 适合人群:具备一定机器学习理论基础和Matlab编程能力的电气工程、自动化、智能电网等相关领域的研究生、科研人员以及从事电力设备状态监测与故障诊断工作的工程技术人员。; 使用场景及目标:①实现变压器早期故障的智能化诊断与预警,提升电力系统运行安全性;②为基于神经网络的工业设备故障分类任务提供可复现的算法实现范例与技术验证平台; 阅读建议:建议读者结合文中提供的Matlab代码,动手复现实验流程,深入理解PNN在实际分类问题中的参数配置、训练策略、性能评估方法,并鼓励将该方法迁移至其他电力设备或机电系统的故障诊断场景中进行拓展研究与优化改进。

优快云首页 发布文章 优快云同步助手 多无人机面向城市空中交通的多无人机路径规划研究(Matlab代码实现) 37 100 摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,系统阐述了该领域的核心挑战与关键技术。文章首先定义了多无人机路径规划的问题,明确了包括飞行安全、避障、协同效率在内的多项约束条件与性能指标。随后,重点介绍了三大类路径规划方法:基于改进RRT算法和图论的全局路径规划方法,用于构建初始可行路径;基于动态风险场的模型预测控制和动态窗口法(DWA)的动态避障方法,以应对环境中的突发障碍;以及多无人机协同规划策略和分布式协同控制算法构成的局部协同调整方法,确保多机间的飞行安全与任务协同。研究通过搭建Matlab仿真实验平台,设计了多种复杂城市飞行场景,对所提方法进行了全面的仿真验证与结果对比分析,展示了各方法在不同场景下的有效性与优劣。; 适合人群:具备一定自动化、计算机或航空航天领域基础知识,从事无人机、智能交通、路径规划等相关方向研究的研发人员和研究生。; 使用场景及目标:①为城市空中交通管理系统(UATM)的设计与开发提供理论基础和技术参考;②应用于物流配送、城市巡检、应急救援等多无人机协同任务的路径规划算法设计与仿真验证;③作为相关领域科研工作的技术参考资料,推动多智能体协同决策与控制技术的发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,通过复现仿真结果加深对各类算法原理与实现细节的理解。在学习过程中,应重点关注全局规划与局部避障的结合机制,以及多机协同策略中的冲突消解逻辑。

无刷直流电机BLDC转速电流双闭环+无位置传感器控制仿真【仿真+详解说明报告+参考文献】

内容概要:本文详细介绍了一套针对无刷直流电机(BLDC)的Simulink仿真资源包,核心内容涵盖转速电流双闭环控制与无位置传感器控制技术,重点采用滑模观测器(SMO)实现对转子位置与速度的精确估算,避免了物理位置传感器带来的成本与可靠性问题。资源包提供了多个高质量仿真模型,包括基于模糊PID与传统PID控制策略的对比分析、无感控制结合滑模观测器与双闭环PI控制的综合系统等,全面展示不同控制算法在动态响应、抗干扰能力及稳态精度方面的性能差异。所有模型均基于Matlab/Simulink平台构建,配套详尽的技术说明文档与参考文献,深入解析控制结构设计、观测器原理、参数整定方法及系统稳定性分析,适用于电机驱动系统的研究、教学演示与工程验证。; 适合人群:面向电气工程、自动化、控制科学与工程及相关专业的本科生、研究生、科研人员和工程技术人员,尤其适合从事电机控制、电力电子与运动控制系统研究的专业人士,具备自动控制理论基础和Matlab/Simulink基本操作能力者更易上手。; 使用场景及目标:① 深入学习并掌握无刷直流电机双闭环调速系统的工作原理与无位置传感器控制的关键技术;② 对比研究模糊PID与传统PID在电机控制中的动态性能与鲁棒性差异;③ 开展滑模观测器在非线性系统状态估计中的建模与仿真研究;④ 支持课程设计、毕业设计、科研项目申报及学术论文复现等实际应用场景。; 阅读建议:建议用户结合提供的详解说明报告,逐步运行各仿真模型,重点关注控制器参数调节过程、滑模观测器的设计细节及其收敛性表现,深入分析系统启动、负载突变、转速切换等工况下的响应特性,鼓励在此基础上进行控制算法改进、引入新型观测器或拓展至其他电机类型进行创新性研究。

【QGIS、OSM】利用python开源工具实现指定区域的交通分配

如果从osmgnms和grid2demand得到的node.csv,我们要修改path4gnms代码中的utils.py的四处设置。利用QGIS实现可视化,得到的link_performance.csv,参数有volume和VOC。改完这四处代码,就可以运行path4gnms中的tutorial.ipynb了。

weixin_40594084的博客 1275
上一篇: Cpp环境【Vijos1060】斯特林数:盒子与球
下一篇: Cpp环境【Vijos1037】【CQYZos1391】搭建双塔
cqyz_Lebmond
博客等级 码龄10年 18粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值