您的位置:首页 > 其它

[CodeForces189A]Cut Ribbon[dp][完全背包]

2015-06-06 09:41 337 查看
题目链接:[CodeForces189A]Cut Ribbon[dp][完全背包]
题意分析:给出一条丝带长度n,要求把丝带切成给定长度a、b、c中的一种或多种,问:最多能切成几条?(保证至少有一个解)
解题思路:题目实质上就是问:刚好装满完全背包,可以装的最大价值为多少?
个人感受:第一眼看题的时候,直接写成了一个爬楼梯的dp方程,发现样例都过不了后,就想着贪心,然后各种。。。。。今儿再看这题,才发现,这特么不就是个完全背包么。。。。泪目了。。。。。。
具体代码如下:
#include<iostream>
#include<cstring>
using namespace std;

int dp[4011];

int main()
{
    int n, a[3];
    cin >> n >> a[0] >> a[1] >> a[2];
    memset(dp, -0x3f, sizeof dp);
    dp[0] = 0;
    for (int i = 0; i < 3; ++i)
        for (int j = a[i]; j <= n; ++j)
            dp[j] = max(dp[j], dp[j - a[i]] + 1);
    cout << dp
 << '\n';
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: