• BZOJ1224 [HNOI2002]*


    首先发现暴搜是2^50级别,明显T了

    我们搜索的时候,剪枝一下。

    如果当前最大最小值都不满足满足题意的话就不搜了,我们可以用前缀和维护这个东西

    于是就6s卡过

     1 /**************************************************************
     2     Problem: 1224
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:6800 ms
     7     Memory:804 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <cmath>
    12  
    13 using namespace std;
    14 typedef double lf;
    15 const lf eps = (lf) 1e-10;
    16 const int N = 60;
    17  
    18 int n, m, ans;
    19 lf x, y, T;
    20 lf s[N];
    21  
    22 void dfs(int pos, int cnt, lf now) {
    23     lf Max = now + s[pos + (n - cnt) - 1] - s[pos - 1],
    24     Min = now + s[m] - s[m - (n - cnt)];
    25     if (Min - T > eps || Max - T < -eps) return;
    26     if (cnt == n) {
    27         ++ans;
    28         return;
    29     }
    30     if (pos == m + 1) return;
    31     dfs(pos + 1, cnt, now);
    32     dfs(pos + 1, cnt + 1, now + (lf) 1 / pos);
    33 }
    34  
    35 int main() {
    36     int i;
    37     scanf("%d%d%lf%lf", &n, &m, &x, &y);
    38     T = (lf) x / y;
    39     for (i = 1; i <= m; ++i)
    40         s[i] = s[i - 1] + (lf) 1 / i;
    41     dfs(1, 0, 0);
    42     printf("%d
    ", ans);
    43     return 0;
    44 }
    View Code

    (p.s.  论c++的坑爹之处:浮点数运算)

    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    5.Docker服务进程关系
    朴素贝叶斯知识点概括
    k近邻法(KNN)知识点概括
    机器学习的应用实例
    HNU 10111 0-1矩阵
    CSU 1421 Necklace
    Poj 3469 Dual Core CPU
    Poj 2135 Farm Tour
    Poj 3180 The Cow Prom
    HDU 1004 Let the Balloon Rise
  • 原文地址:https://www.cnblogs.com/rausen/p/4163863.html
Copyright © 2020-2023  润新知