BZOJ


比较裸的状压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 <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#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<<M)+1],ref[(1<<M)+1]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
} int main()
{
int n=read(),m=read(),lim=(1<<m)-1;
for(int i=0; i<m; ++i) ref[1<<i]=i;
for(int i=1; i<=n; ++i)
for(int j=(dis[i]=read(),0); j<m; ++j) cost[i][j]=read();
memset(f,0x3f,sizeof f), f[0][0]=0;
for(int i=1; i<=n; ++i)
{
for(int s=0; s<=lim; ++s) f[i][s]=f[i-1][s]+dis[i];
for(int s=0; s<lim; ++s)
{
for(int ss=s^lim,j; ss; ss^=lb(ss))
{
j=ref[lb(ss)];
f[i][s|(1<<j)]=std::min(f[i][s|(1<<j)],f[i][s]+cost[i][j]);
}
}
for(int s=0; s<=lim; ++s) f[i][s]=std::min(f[i][s],f[i-1][s]);
}
printf("%d\n",f[n][lim]); return 0;
}

最新文章

  1. 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)
  2. JS---如何避免用户在请求时“猛击”
  3. tar
  4. JavaScript——DOM操作——Window.document对象
  5. poj 1236 Network of Schools(连通图入度,出度为0)
  6. 中科院NLPIR中文分词java版
  7. XDubg的配置与应用
  8. eclipse中的debug的用法
  9. sql,nosql
  10. 近期unity ios接入的事情
  11. c++ 智能指针【转载】
  12. EF6CodeFirst+MVC5+Autofac泛型注册 入门实例
  13. Java - String 的字面量、常量池、构造函数和intern()函数
  14. 编年史:OI测试
  15. Ecplise通过Git将项目提交到GitHub
  16. Square Numbers UVA - 11461(水题)
  17. too few PGs per OSD (20 &lt; min 30)
  18. Ubuntu的人性化配置
  19. 【Linux】Linux文件属性
  20. java线程同步方法,方法块差别

热门文章

  1. JGUI源码:实现日期控件显示(17)
  2. redis---------AOF文件异常导致的redis无法载入
  3. 记我在github上参与的Star增长最快的十万级项目。。。
  4. vue项目的常用配置代码
  5. hibernate之事务处理
  6. static关键字特点
  7. python封装configparser模块获取conf.ini值(优化版)
  8. First Unique Character in a String
  9. node.js+mongodb 爬虫
  10. java--序列化和反序列化