zoukankan      html  css  js  c++  java
  • bzoj 1042: [HAOI2008]硬币购物

    网上题解一搜一大把我就不献丑了,直接放代码吧

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <iostream>
     5 using namespace std;
     6 #define N 100008
     7 #define M 1008
     8 
     9 long long  S,F[N],n,C[5],T,A[M][5];
    10 
    11 void init()
    12 {
    13     for (int i = 1;i <= 4;i++) scanf("%d",&C[i]);
    14     F[0] = 1;
    15     scanf("%lld",&T);
    16     for (int i = 1;i <= T;i++) 
    17     {
    18         for (int j = 1;j <= 4;j++) scanf("%d",&A[i][j]);
    19         scanf("%lld",&A[i][0]);
    20         S = max(S,A[i][0]);
    21     }
    22 }
    23 
    24 void DP()
    25 {
    26     for (int i = 1;i <= 4;i++)
    27         for (int j = 0;j <= S;j++)
    28             if (C[i]+j <= S) F[C[i]+j] += F[j]; 
    29 }
    30 
    31 void work()
    32 {
    33     for (int i = 1;i <= T;i++)
    34     {
    35         long long ans = 0;
    36         long long  S = A[i][0];
    37         ans += F[S];
    38         for (int j = 1;j <= 4;j++) 
    39         if (S - (A[i][j]+1)*C[j] >= 0)
    40         {
    41             ans -= F[S - (A[i][j]+1)*C[j]];
    42             for (int k = j+1;k <= 4;k++) 
    43             if (S - (A[i][j]+1)*C[j] - (A[i][k]+1)*C[k] >= 0)
    44             {
    45                 ans += F[S - (A[i][j]+1)*C[j] - (A[i][k]+1)*C[k]];
    46                 for (int l = k+1;l <= 4;l++)
    47                 if (S - (A[i][j]+1)*C[j] - (A[i][k]+1)*C[k] - (A[i][l]+1)*C[l] >= 0)
    48                 {
    49                     ans -= F[S - (A[i][j]+1)*C[j] - (A[i][k]+1)*C[k] - (A[i][l]+1)*C[l]];
    50                     for (int m = l+1;m <= 4;m++)
    51                     if (S - (A[i][j]+1)*C[j] - (A[i][k]+1)*C[k] - (A[i][l]+1)*C[l] - (A[i][m]+1)*C[m] >= 0)
    52                         ans +=F[S - A[i][j]+1*C[j] - (A[i][k]+1)*C[k] - (A[i][l]+1)*C[l] - (A[i][m]+1)*C[m]]; 
    53                 }
    54             }
    55         }
    56         printf("%lld
    ",ans);
    57     }
    58 
    59 }
    60 
    61 int main()
    62 {
    63     init();
    64     DP();
    65     work();
    66     return 0;
    67 }
    View Code
  • 相关阅读:
    精品绿色便携软件下载站
    DIV + CSS
    CSS基础
    尘封往事
    最近ゲームにはまってる。
    比水更浓的水
    有些事我得记下来
    一年前的今晚,注定是个岔路口.
    放下全世界
    超级保镖:国外精品个人防火墙亲密接触(2) java程序员
  • 原文地址:https://www.cnblogs.com/wulala979/p/3537035.html
Copyright © 2011-2022 走看看