zoukankan      html  css  js  c++  java
  • poj1837

    题意:有一个天平,两个臂上有钩子,给出所有钩子的位置,给出每个钩码的重量(各不相同),求必须使用所有钩码的前提下,有多少种平衡方法。

    分析:dp,f[i][j + 5000]表示用前i个砝码到达力矩j的方法数

    f[i + 1][j + hook[k] * weight[i]] += f[i][j];

    最终结果存储在f[n][5000]中。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    #define maxn 25
    #define maxw 10005

    int n, m;
    int hook[maxn], weight[maxn];
    int f[maxn][maxw];

    int main()
    {
    //freopen("t.txt", "r", stdin);
    scanf("%d%d", &n, &m);
    for (int i =0; i < n; i++)
    scanf(
    "%d", &hook[i]);
    for (int i =0; i < m; i++)
    scanf(
    "%d", &weight[i]);
    f[
    0][5000] =1;
    for (int i =0; i < m; i++)
    for (int j =0; j < maxw; j++)
    if (f[i][j])
    for (int k =0; k < n; k++)
    f[i
    +1][j + hook[k] * weight[i]] += f[i][j];
    printf(
    "%d\n", f[m][5000]);
    return0;
    }
  • 相关阅读:
    一本通1559跳跳棋
    一本通1558聚会
    一本通1555【例 4】次小生成树
    P1880 [NOI1995]石子合并
    P2066 机器分配
    P2073 送花
    P1886 滑动窗口
    P1637 三元上升子序列
    P1533 可怜的狗狗
    P1631 序列合并
  • 原文地址:https://www.cnblogs.com/rainydays/p/2076734.html
Copyright © 2011-2022 走看看