下载资源后端资源详情
acm常用算法模板.zip
大小:5.57KB
价格:10积分
下载量:0
评分:
5.0
上传者:un_fired
更新日期:2025-02-14

acm常用算法模板(C++版)

资源文件列表(大概)

文件名
大小
dijkstra算法.txt
1.97KB
kmp.txt
493B
匈牙利算法.txt
601B
区间修改线段树.txt
2.07KB
单点修改线段树.txt
2.08KB
快速幂模板.txt
228B
最小生成树(krus).txt
1.18KB
背包.txt
2.44KB

资源内容介绍

acm常用算法模板(C++版)
//01背包#include <stdio.h>#include <string.h> int f[1010],w[1010],v[1010];//f记录不同承重量背包的总价值,w记录不同物品的重量,v记录不同物品的价值 int main(){ int t,m,i,j; memset(f,0,sizeof(f)); //总价值初始化为0 scanf("%d %d",&t,&m); //输入背包承重量t、物品的数目m for(i=1;i<=m;i++) scanf("%d %d",&w[i],&v[i]); //输入m组物品的重量w[i]和价值v[i] for(i=1;i<=m;i++){ //尝试放置每一个物品 for(j=t;j>=w[i];j--){//倒叙是为了保证每个物品都使用一次 f[j]=max(f[j-w[i]]+v[i],f[j]); //在放入第i个物品前后,检验不同j承重量背包的总价值,如果放入第i个物品后比放入前的价值提高了,则修改j承重量背包的价值,否则不变 } } printf("%d\n",f[t]); //输出承重量为t的背包的总价值 return 0;} //完全背包#include<cstdio>#include<algorithm>using namespace std;int w[300],c[300],f[300010];int V,n;int main(){ scanf("%d%d",&V,&n); for(int i=1; i<=n; i++) { scanf("%d%d",&w[i],&c[i]); } for(int i=1; i<=n; i++) for(int j=w[i]; j<=V; j++)//注意此处,与0-1背包不同,这里为顺序,0-1背包为逆序 f[j]=max(f[j],f[j-w[i]]+c[i]); printf("max=%d\n",f[V]); return 0;}//多重背包#include <iostream>#include<cstdio>#include<cstring>using namespace std;int dp[100007],n,m,a[105],c[105],count;void zeropack(int cost,int value){ for(int i=m;i>=cost;i--) dp[i]=max(dp[i],dp[i-cost]+value); // cout<<"01"<<endl;}void completepack(int cost,int value){ for(int i=cost;i<=m;i++) dp[i]=max(dp[i],dp[i-cost]+value); //cout<<"complete"<<endl;}void multipack(int cost,int value,int num){ if(num*cost>=m) { completepack(cost,value); return; } int k=1; while(k<num) { zeropack(k*cost,k*value); num-=k; k*=2; } zeropack(num*cost,num*value);}int main(){ // freopen("cin.txt","r",stdin); while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&c[i]); memset(dp,0,sizeof(dp)); count=0; for(int i=1;i<=n;i++) { multipack(a[i],a[i],c[i]); } for(int i=1;i<=m;i++) { if(dp[i]==i) count++; //printf("dp[]=%d\n",dp[i]); } printf("%d\n",count); } return 0;}

用户评论 (0)

发表评论

captcha

相关资源

《分布式事件驱动控制在有限时间一致性中的研究与应用-以为例》,分布式事件驱动控

《分布式事件驱动控制在有限时间一致性中的研究与应用——以为例》,分布式事件驱动控制:多智能体网络有限时间一致性达成的关键技术探讨,1 控制领域超顶期刊Automatica程序复现-《Distributed event-driven control for finite-time consensus》【主要内容】本文研究了多智能体网络如何利用分布式事件驱动控制实现有限时间一致性。由于非光滑控制和触发条件所产生的混合非线性,与连续时间控制相比,事件驱动控制的有限时间共识分析更具挑战性。我们研究了具有单积分器动态和标量状态的智能体,并提出了一种用于有限时间一致性的分布式事件驱动控制协议,并与连续时间控制进行了比较。结果表明,使用所提出的事件驱动控制方案,智能体可以在有限的时间内达成一致,并且不会出现 Zeno 行为。我们还得到了起跳时间的估计值,并证明它不仅与初始条件和网络连通性有关,还与事件触发条件相关。我们给出了仿真来证明理论结果。,Control Pr

409.87KB14积分

Apollo3-Blue OTA中文说明

Apollo3-Blue OTA中文说明

3.32MB14积分

探讨马兰戈尼对流对Comsol激光抛光熔覆中熔池流动行为的影响:活性元素调控表面张力系数的力学分析 ,"Comsol激光抛光技术:熔覆熔池流动与马兰戈尼对流效应的深度解析,考虑活性元素影响下的表面张力

探讨马兰戈尼对流对Comsol激光抛光熔覆中熔池流动行为的影响:活性元素调控表面张力系数的力学分析。,"Comsol激光抛光技术:熔覆熔池流动与马兰戈尼对流效应的深度解析,考虑活性元素影响下的表面张力系数变化及蒸汽反冲压力、重力与浮力的综合作用",comsol激光抛光、熔覆熔池流动,考虑马兰戈尼对流(考虑活性元素,改变表面张力系数),表面张力、蒸汽反冲压力、重力、浮力,核心关键词:comsol激光抛光; 熔覆熔池流动; 马兰戈尼对流; 活性元素; 表面张力系数; 蒸汽反冲压力; 重力; 浮力。,"COMSOL激光抛光技术:熔覆熔池流动与马兰戈尼效应的联合研究"

108.52KB15积分

基于MPC、PTC及AFS技术的车辆路径跟踪控制策略仿真研究-以72km/h高速度、不同附着系数双移线工况为例,在MATLAB 2020b及CarSim 2020环境下仿真验证,"基于MPC与PTC

基于MPC、PTC及AFS技术的车辆路径跟踪控制策略仿真研究——以72km/h高速度、不同附着系数双移线工况为例,在MATLAB 2020b及CarSim 2020环境下仿真验证,"基于MPC与PTC的车辆路径跟踪控制策略研究:侧偏角软约束与主动前轮转向AFS的协同作用",模型预测控制MPC+路径跟踪PTC+侧偏角软约束+主动前轮转向AFS,范例是72km h,附着系数0.3的单移线,附着系数0.85双移线。仿真MATLAB2020b版本和carsim2020。MPC: 一为增量式方法编写,采用s-function实现,输入为跟踪误差、横摆角误差、侧向速度和横摆角速度,输出量为前轮转角,仅考虑横向控制。考虑了前后轮的侧偏角软约束,在侧偏角到约束边界时减小控制律,保证侧偏角的稳定。 二为采用Apollo中的模型,基于MATLAB function编写,不包括侧偏角软约束,作为对比参考使用。包含carsim的cpar文件、模型mdl文件、绘图m文件(运行后一键出图)、说明文档和中文文献。,核心关键词:MPC; 路径跟踪PTC; 侧偏角软约束; 主动前轮转向A

657.76KB17积分