码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ1224 [HNOI2002]彩票

时间:2014-12-15 00:01:21      阅读:453      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

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

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

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

于是就6s卡过

 

bubuko.com,布布扣
 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\n", ans);
43     return 0;
44 }
View Code

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

BZOJ1224 [HNOI2002]彩票

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/rausen/p/4163863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!