POJ 1252 DP
2016-07-29 21:55
211 查看
题意:给你6个数。让你求出1~100范围内的数 最优情况下由这六个数加减几步得到。 输出平均值和最大值。
思路:
我就随便写了写,,,感觉自己的思路完全不对。 但是交上去 AC了!!!
我先当减法 不存在 完全背包 出来1~10100范围以内的最优解
然后再枚举一下从哪个地方开始减。
得出ans数组 ,,就A了。。。
完全不知道自己怎么AC的、、、
// by SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int cases,sum,maxx,a[6],f[10101],ans[105]; int main(){ scanf("%d",&cases); while(cases--){ memset(ans,0x3f,sizeof(ans)),sum=maxx=0; memset(f,0x3f,sizeof(f)),f[0]=0; for(int i=0;i<6;i++)scanf("%d",&a[i]); for(int i=0;i<=10100;i++) for(int j=0;j<6;j++) f[i+a[j]]=min(f[i+a[j]],f[i]+1); for(int i=1;i<=100;i++) for(int j=0;j<=10000;j++) ans[i]=min(ans[i],f[i+j]+f[j]); for(int i=1;i<=100;i++)sum+=ans[i],maxx=max(maxx,ans[i]); double Sum=0.01*sum; printf("%.2lf %d\n",Sum,maxx); } }
相关文章推荐
- Java中的位运算机制详解
- hdoj 5773 <变相LIS>
- openwrt 开机启动
- Leetcode Single Number III
- 模拟strstr函数
- 大数据2 Hadoop伪分布模式配置部署
- 多重背包模板
- Java8新特性
- 机器学习领域的五大流派
- 有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?
- 二分+dp,在一个地方上卡了2小时
- 人生十难
- Hdu 3363 Ice-sugar Gourd(思路)
- AWS & ASP.NET
- ubuntu 下如何以root身份登录
- Java设计模式--单例模式
- 垃圾收集 与自动内存管理
- Hdu 5765 Bonds
- Python随学随记(4)—— 条件和循环
- Android Studio does not detect .aidl files