zoukankan      html  css  js  c++  java
  • lightoj 1037

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1037

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #define inf 0X3f3f3f3f
     5 using namespace std;
     6 int dp[1 << 16] , hp[20];
     7 char dam[20][20];
     8 int main() {
     9     int t , ans = 0;
    10     scanf("%d" , &t);
    11     while(t--) {
    12         int n;
    13         scanf("%d" , &n);
    14         for(int i = 0 ; i < n ; i++) scanf("%d" , &hp[i]);
    15         for(int i = 0 ; i < n ; i++) {
    16             scanf("%s" , dam[i]);
    17         }
    18         memset(dp , inf , sizeof(dp));
    19         dp[0] = 0;
    20         for(int i = 0 ; i < (1 << n) ; i++) {
    21             for(int j = 0 ; j < n ; j++) {
    22                 if(i & (1 << j)) continue;
    23                 else {
    24                     dp[i | (1 << j)] = min(dp[i | (1 << j)] , dp[i] + hp[j]);
    25                     for(int k = 0 ; k < n ; k++) {
    26                         if(i & (1 << k)) {
    27                             int tm = 1;
    28                             if(dam[k][j] - '0') tm = dam[k][j] - '0';
    29                             dp[i | (1 << j)] = min(dp[i | (1 << j)] , dp[i] + hp[j] / tm + (hp[j] % tm == 0 ? 0 : 1));
    30                         }
    31                     }
    32                 }
    33             }
    34         }
    35         printf("Case %d: %d
    " , ++ans , dp[(1 << n) - 1]);
    36     }
    37     return 0;
    38 }

    题解:简单的状压dp存一下被kill的人的状态就行。

  • 相关阅读:
    一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
    210902
    1-2
    1-1
    4
    3
    2
    1
    u编码
    windows java 安装版 控制面板
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/7119611.html
Copyright © 2011-2022 走看看