洛谷题目链接

动态规划:

这个题目调了我好久。。。。结果循环变量写错了。。。

而且题目有个坑!!!只能用开始给你的$v$元买入东西


回归正题:

我们定义状态$ans[i][j]$表示第$i$个物品用了至多$j$次魔法的最小花费,但是我们发现这样子的话不好与合成关系联系在一起,那么我们再定义一个数组$f[i][j]$表示某一个合成关系中,前$i$个物品中用至多$j$次魔法合成的最小花费

那么最后就普通$dp$就行了

#include<iostream>
#include<cstdio>
#include<cstring>
#define inf 0x7f7f7f7f
#define M 300
#define K 31
using namespace std;
struct Magic
{
int to,num,thing[M];
}magic[M];
int n,m,v,k;
int pay[M],get[M],f[M][M],ans[M][M],dp[M][1007];
int main()
{
scanf("%d%d%d%d",&n,&m,&v,&k);
for(int i=1;i<=n;++i)
scanf("%d%d",&pay[i],&get[i]);
for(int i=1;i<=m;++i)
{
scanf("%d%d",&magic[i].to,&magic[i].num);
for(int j=1;j<=magic[i].num;++j)
scanf("%d",&magic[i].thing[j]);
}
for(int i=1;i<=n;++i)
for(int j=0;j<=k;++j)
ans[i][j]=pay[i];
for(int l=1;l<=k;++l)
{
for(int i=1;i<=m;++i)
{
for(int j=1;j<=magic[i].num;++j)
for(int o=0;o<l;++o)
{
f[j][o]=inf;
for(int oo=0;oo<=o;++oo)
f[j][o]=min(f[j][o],f[j-1][o-oo]+ans[magic[i].thing[j]][oo]);
}
ans[magic[i].to][l]=min(ans[magic[i].to][l],f[magic[i].num][l-1]);
}
}
// for(int i=1;i<=n;++i)
// {
// for(int j=1;j<=m;++j)
// printf("%d ",ans[i][j]);
// printf("\n");
// }
for(int i=1;i<=n;++i)
for(int j=0;j<=k;++j)
for(int o=0;o<=k-j;++o)
for(int l=ans[i][j];l<=v;++l)
dp[j+o][l]=max(dp[j+o][l],dp[o][l-ans[i][j]]+get[i]-ans[i][j]);
printf("%d",dp[k][v]);
return 0;
}

  

最新文章

  1. DataBase异常状态:Recovery Pending,Suspect,估计Recovery的剩余时间
  2. jQuery 中对 CommonJs 的支持处理
  3. Mysql Communication link failure :1153 Got a packet bigger than &#39;max_allowed_packet&#39; bytes
  4. Android Material Design 学习笔记 - Matrial Theme
  5. 分享一个Mongodb PHP封装类
  6. makefile for VCS from Syn@psys
  7. 用JS实现避免重复加载相同js文件
  8. iOS学习之数据请求
  9. SSI框架总结
  10. 【转】centos安装vim7.4
  11. MYSQL数据库学习七 视图的操作
  12. ionic3 在windows环境下打包android 正式签名版APK
  13. springboot学习四:整合mybatis
  14. 细说MySQL表操作
  15. linux修改文件为可执行文件
  16. python正则表达式(四)
  17. MobaXterm的一些介绍(Top 5 SSH Clients for Windows (Alternatives of PuTTY))
  18. 第36-37 Tomcat & SVN
  19. &lt;Android 基础(三 十)&gt; Fragment (3) ~ PreferenceFragment
  20. 配置httpd2.4与常见的I/O模型说明

热门文章

  1. go for range 可以方便的对slice 切片或者 map 进行迭代循环
  2. (三十)JSP标签之自定义标签
  3. CSS3实现瀑布流布局
  4. FPGA上外挂DDR2&amp;DDR3&amp;MIG IP的使用记录
  5. CircularSlider半弧形滑动条
  6. HighChart中的tooltip的第一行数字明显比其他的字要小
  7. 你不知道的javascript(上卷)读后感(二)
  8. vagrant 搭建开发环境
  9. Timestamp,Date和String的互相转换
  10. 三年总结出来的11个JPA和Hibernate查询配置小技巧