http://acm.hdu.edu.cn/showproblem.php?pid=1114&&完全背包

本文介绍了一种将完全背包问题通过二进制优化转化为0-1背包问题的方法,旨在解决储蓄罐装满时获得的最少价值问题。文章提供了详细的算法实现步骤,并通过代码示例展示了如何进行优化。

题意:硬币的数量不限制,让储蓄罐装满时得到的最少价值。

思路:先将完全背包转化成多重背包,再转化成0-1背包来解,不过这里要进行二进制优化,因为这里要保证储蓄罐要装满,所以需要先把容量为0时,价值赋为0,因为让求最小价值,因此需要把大于0的容量都赋为无穷大,如果让求的是装满时的最大价值则要把大于0的容量都赋为无穷小。。。

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 10000;
int dp[10001];
int w[350005];
int v[350005];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
	  int p,q;
	  cin>>p>>q;
	  p=q-p;
	  for(int i=0;i<10001;++i)
	  dp[i]=0xfffff;
	  dp[0]=0;
	  int n;
	  cin>>n;
	  int tot=0;
	  for(int i=0;i!=n;++i)
	  {
		  int a,b;
		  cin>>a>>b;
		  int k=p/b;
		  int t=1;
		  while(2*t<k+1)
		  {
			  w[tot]=t*b;
			  v[tot++]=t*a;
			  t=2*t;
		  }
		  w[tot]=(k+1-t)*b;
		  v[tot++]=(k+1-t)*a;
       }
	  for(int i=0;i<tot;++i)
		 {  
			 if(w[i]>p) continue;
			 for(int j=p;j>=w[i];--j)
			   dp[j]=min(dp[j-w[i]]+v[i],dp[j]);
		}
	  if(dp[p]<0xfffff) cout<<"The minimum amount of money in the piggy-bank is "<<dp[p]<<"."<<endl;
	  else cout<<"This is impossible."<<endl;
		}return 0;
}

完全背包:

#include<iostream>
#include<string.h>
#include<algorithm>
#define N 10001
using namespace std;
int dp[N];
int w[501],v[501];
int main()
{
   int t;
   cin>>t;
   while(t--)
   {
       int p,q;
       cin>>p>>q;
       p=q-p;
       int n;
       cin>>n;
       for(int i=0;i<N;++i)
           dp[i]=0xfffff;
       dp[0]=0;
       for(int i=0;i!=n;++i)
          cin>>v[i]>>w[i];
         for(int i=0;i<n;++i)
             { 
                 if(w[i]>p) continue;
                 for(int j=w[i];j<=p;++j)
                {
                  dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
                }
            }
             
         if(dp[p]<0xfffff) cout<<"The minimum amount of money in the piggy-bank is "<<dp[p]<<"."<<endl;
      else cout<<"This is impossible."<<endl;
   }return 0;
}



内容概要:本文研究了一种应用于太阳能发电系统的多级逆变器,旨在通过采用正弦脉宽调制(SPWM)技术有效降低输出电压的总谐波失真(THD),从而提升电能质量。研究基于Simulink平台构建了完整的仿真模型,系统地实现了SPWM信号生成、驱动逻辑控制以及多电平输出波形合成等关键环节,验证了该多级逆变器在不同运行工况下具备优异的动态响应能力和稳定性。仿真结果表明,所设计的逆变器能够输出接近理想正弦波的电压波形,显著抑制高次谐波,满足可再生能源并网对电能质量的严苛要求,体现出多级逆变拓扑在光伏发电系统中的技术先进性与工程应用价值。; 适合人群:电气工程、自动化、新能源科学与工程及相关专业的本科生、研究生,以及从事光伏逆变器设计、电力电子变换技术和可再生能源并网系统研发的工程技术人员。; 使用场景及目标:①深入理解多级逆变器的工作原理及其在太阳能发电系统中的关键作用;②掌握SPWM调制技术的理论基础与实现方法,并分析其对改善THD的核心机制;③借助Simulink仿真平台开展电力电子电路的建模、参数调试与性能评估,服务于课程设计、毕业设计、科研课题或实际工程项目开发。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作与验证,细致调整调制比、载波频率等关键参数,观察其对输出波形和THD指标的影响,以深化对系统动态特性的理解,并尝试优化控制策略以进一步提升系统性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值