4145: [AMPPZ2014]The Prices 状压DP
2016-02-26 14:19
435 查看
裸状压DP,令fi,j表示前i个商店物品购买状态为j的最小值,每次在每个商店里跑背包。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,d[105],c[105][17]; int f[105][1<<16]; inline int read() { int a=0,f=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();} while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();} return a*f; } int main() { n=read(); m=read(); for (int i=1;i<=n;i++) { d[i]=read(); for (int j=1;j<=m;j++) c[i][j]=read(); } memset(f,127/3,sizeof(f)); f[0][0]=0; for (int i=1;i<=n;i++) { for (int j=0;j<(1<<m);j++) f[i][j]=f[i-1][j]+d[i]; for (int k=1;k<=m;k++) for (int j=0;j<(1<<m);j++) if (((1<<(k-1))&j)==0) f[i][j|(1<<(k-1))]=min(f[i][j|(1<<(k-1))],f[i][j]+c[i][k]); for (int j=0;j<(1<<m);j++) f[i][j]=min(f[i][j],f[i-1][j]); } printf("%d\n",f [(1<<m)-1]); return 0; }
相关文章推荐
- Hibernate之使用sql语句查询多个表,返回多种字段,将返回结果映射到自定义的普通pojo类中
- Linux/Unix下采用dlopen、dlsym、dlclose加载动态链接库
- MongoDB java 3.2版本查询指定列和排序的补充
- 抽象类一个很好的例子
- UVA 10391(p135)----Compound Words
- UVA 10410(p180)----Tree Reconstruction
- 九、UiWatcher API 详细介绍
- 数据一致性-分区可用性-性能
- bzoj 3223: Tyvj 1729 文艺平衡树
- Uncaught ReferenceError: XXX is not defined
- ExpandableListView里面嵌套GridView的问题
- java中使用redis学习
- Android studio 导入*.jar包 如 Vollley
- 关于weblogic 12c 部署ear应用包时 出现Exception: 48188的一种解决方法
- NAT穿越
- 过滤器方法的执行过程
- Javascript和CSS浏览器兼容性方面经验总结
- Android之GlSurfaceView调度Skia
- gpu 概论
- 模型MBean 初探