zoukankan      html  css  js  c++  java
  • HDU 5616 Jam's balance(Jam的天平)

    HDU 5616 Jam's balanceJam的天平

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

     

    Problem Description - 题目描述

      Jim has a balance and N weights. (1≤N≤20)
      The balance can only tell whether things on different side are the same weight.
      Weights can be put on left side or right side arbitrarily.
      Please tell whether the balance can measure an object of weight M.

    Jim 有一个天平和N块砝码。(1≤N≤20)
    使用天平只能得知两端质量是否相等。
    砝码可以放置在左右任意一端。
    判断天平能否测量质量为M的物体。
    CN

    Input - 输入

      The first line is a integer T(1≤T≤5), means T test cases.

      For each test case :

      The first line is N, means the number of weights.

      The second line are N number, i'th number wi(1≤wi≤100)means the i'th weight's weight is wi.

      The third line is a number MM is the weight of the object being measured.

    第一行有一个整数T(1≤T≤5),表示测试用例数。
    对于每组测试用例:
    第一行为N,表示砝码数。
    第二行有N个数,第i个数wi(1≤wi≤100)表示
    第三行有一个整数M。M为待测物体质量。
    CN

    Output - 输出

      You should output the "YES"or"NO".

    输出"YES"or"NO"
    CN

     

    Sample Input - 输入样例

    1
    2
    1 4
    3
    2
    4
    5
    

    Sample Output - 输出样例

    NO
    YES
    YES
    

    Hint - 提示

      For the Case 1:Put the 4 weight alone

      For the Case 2:Put the 4 weight and 1 weight on both side

    例子1:一端放置4
    例子2:放置4和1在同一端
    CN

    题解

      DP水题,先算+,再算-,没了。

     

    代码 C++

     1 #include <cstdio>
     2 #include <cstring>
     3 #define MX 1500
     4 bool dp[MX];
     5 int main() {
     6     int t, n, i, j, data[25];
     7     scanf("%d", &t);
     8     while (t--) {
     9         scanf("%d", &n);
    10         for (i = 0; i < n; ++i) scanf("%d", data + i);
    11         memset(dp, 0, sizeof dp); dp[0] = 1;
    12         for (i = 0; i < n; ++i) {
    13             for (j = MX; ~j; --j) if (dp[j]) dp[j + data[i]] = 1;
    14         }
    15         for (i = 0; i < n; ++i) {
    16             for (j = data[i]; j < MX; ++j) if (dp[j]) dp[j - data[i]] = 1;
    17         }
    18         scanf("%d", &n);
    19         for (i = 0; i < n; ++i) {
    20             scanf("%d", &j);
    21             dp[j] ? puts("YES") : puts("NO");
    22         }
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    IOS总结_无需自己定义UITabbar也可改变UITabbarController的背景和点击和的颜色
    破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV
    HDUJ 2074 叠筐 模拟
    CSRF——攻击与防御
    Ant命令行操作
    C#软件开发实例.私人订制自己的屏幕截图工具(七)加入放大镜的功能
    qemu-kvm-1.1.0源代码中关于迁移的代码分析
    FileSystemWatcher使用方法具体解释
    configure交叉编译
    海量图片存储策略
  • 原文地址:https://www.cnblogs.com/Simon-X/p/6914385.html
Copyright © 2011-2022 走看看