博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ.4145.[AMPPZ2014]The Prices(状压DP)
阅读量:5161 次
发布时间:2019-06-13

本文共 643 字,大约阅读时间需要 2 分钟。


比较裸的状压DP。

刚开始写麻烦惹...
\(f[i][s]\)表示考虑了前\(i\)家商店,所买物品状态为\(s\)的最小花费。
可以写求一遍一定去\(i\)商店的\(f[i]\)\(f[i][s]=f[i-1][s]+dis[i]\)),然后再和不去\(i\)商店的\(f[i-1]\)取个\(\min\)
复杂度是\(O(nm2^m)\)吗...

可以优化,处理\(f[s]\)表示在某家商店买\(s\)集合的物品的最小代价。然后令\(g[s]\)表示考虑所有商店买\(s\)集合的最小代价,有\(g[s]=\min(f[s],g[s']+f[s\ \text{xor}\ s'])\)

复杂度\(O(n2^m+3^m)\)


//27452kb   5284ms#include 
#include
#include
#include
#define lb(x) (x&-x)#define gc() getchar()typedef long long LL;const int N=103,M=16;int dis[N],cost[N][M+1],f[N][(1<
<

转载于:https://www.cnblogs.com/SovietPower/p/10752008.html

你可能感兴趣的文章
jquary常见问题总结
查看>>
java时间格式大全
查看>>
Javascript中eval解析的json的几种用法
查看>>
Dashbroad 展现数据
查看>>
Jedis路由key的算法剥离
查看>>
Codeforces Round #485 (Div. 2)
查看>>
记一次博客被群压的经历
查看>>
Java String codePoint相关api
查看>>
bzoj4447 SCOI2015 小凸解密码 password
查看>>
解析Ceph: RBDCache 背后的世界
查看>>
qt安装遇到的错误
查看>>
Linux下which、whereis、locate、find 区别
查看>>
h.264加权预测
查看>>
as4 通过yum自动升级实现
查看>>
mimtproxy的使用(windows)
查看>>
学习springMVC实例1——配置和跳转到HelloWorld
查看>>
注解@Slf4j
查看>>
92:Reverse Linked List II翻转链表【链表】
查看>>
JDBC 获取被插入数据的主键ID值
查看>>
new Date()时间对象
查看>>