NOI库8756 砝码称重V2
2015-10-14 17:24
190 查看
题目:http://noi.openjudge.cn/ch0207/8756/
分析:DP,如果分解成01背包会TLE。需要用部分背包做。
代码:
分析:DP,如果分解成01背包会TLE。需要用部分背包做。
代码:
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int Tmax=105,Tmax2=100005; int a[Tmax],w[Tmax]={0,1,2,3,5,10,20},ans; bool f[Tmax2]; void zeropack(int wx) { int i; for(i=Tmax2-2;i>=wx;i--) f[i]=f[i]||f[i-wx]; return; } void mulpack(int wx,int num) { int k=1; while(k<num) { zeropack(k*wx); num-=k; k<<=1; } zeropack(num*wx); return; } int main() { int i; scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]); f[0]=true; for(i=1;i<=6;i++) mulpack(w[i],a[i]); for(i=1;i<=Tmax2-2;i++) ans+=f[i]; printf("Total=%d",ans); return 0; }
相关文章推荐
- MFC颜色对话框使用
- NSURLSession/NSURLConnection HTTP load failed解决办法
- 1041_考试座位号
- Extjs进度条
- Chrome Developer Tools之网络监控与调优
- Fragment
- hibernate无法自动创建表的原因整理
- 问个spring自身框架中的log.info()怎么才能不往catalina.out写的问题
- linux内存释放
- ERROR 1044 (42000): Access denied for user ”@’localhost’ to database ‘mysql’
- superoj925 hello
- ubuntu 改换163源
- linux常用命令解析
- Java集合collection编程题及答案
- 解决Tomcat v8.0 Server at localhost failed to start.
- 指针详解
- Swift2.1 语法指南——类型转换
- Linux 常见的trouble shooting故障排错
- hive操作(三)
- Android AlertDialog.Builder详解