zoukankan      html  css  js  c++  java
  • c++ 砝码秤重

    砝码秤重

    Description

    设有n种砝码,第k种砝码有Ck个,每个重量均为Wk,求:用这些砝码能秤出的不同重量的个数,但不包括一个砝码也不用的情况。

    Input

    输入的第一行只有一个数n,表示不同的砝码的种类数. 第2行至第n+1行,每行有两个整数.第k+1行的两个数分别表示第k种砝码的个数和重量.

    Output

    输出中只有一行数据:Total=N。表示用这些砝码能秤出的不同重量数。

    Sample Input

    2 
    2 2
    2 3
    

    Sample Output

    Total=8
    

    HINT

    对于100%的数据,砝码的种类n满足:1≤n≤100;

    对于30%的数据,砝码的总数量C满足:1≤C≤20;

    对于100%的数据,砝码的总数量C满足:1≤C≤100;

    对于所有的数据,砝码的总重量W满足:1≤W≤400000;

    Source

    #include <bits/stdc++.h>
    using namespace std;
    bool f[400001];
    int n, a[101], b[101];
    int main() {
        cin >> n;
        int max = 0;
        for (int i = 1; i <= n; i ++) {
            scanf("%d %d", &a[i], &b[i]);
            max = a[i] * b[i];
        }
        memset (f, 0, sizeof(f));
        f[0] = 1;
        for (int i = 1; i <= n; i ++) {
            for (int j = 1; j <= a[i]; j ++) {
                for (int k = 400000; k >= 0; k --) {
                    if (f[k] == 1 && k + b[i] <= 400000) {
                        f[k + b[i]] = 1;
                    }
                }
            }
        }
        int ans = 0;
        for (int i = 1; i <= 400000; i ++) {
            if (f[i] == 1) {
                ans ++;
            }
        }
        printf("Total=%d", ans);
        return 0;
    }
    /**************************************************************
        Problem: 1604
        User: LJA001162
        Language: C++
        Result: 正确
        Time:84 ms
        Memory:1928 kb
    ****************************************************************/
    
  • 相关阅读:
    异步加载技术实现瀑布流效果
    点击向下展开的下拉菜单特效
    几个个实用的PHP代码片段【自己备份】
    cache和buffer区别探讨
    windows 文本文件放到linux下使用
    制作rpm包
    mariadb在线热备份做主从
    检查目录下备份文件的脚本
    different between method and function
    mysql忘记root密码解决
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11867686.html
Copyright © 2011-2022 走看看