zoukankan      html  css  js  c++  java
  • 【codeforces 768D】Jon and Orbs

    【题目链接】:http://codeforces.com/contest/768/problem/D

    【题意】

    你有一个水晶;
    它每天都会产生一个球??(球有k种)
    然后每种球产生的可能性是相同的->1/k
    然后给你q个询问;
    每个询问pi;
    问你最少需要多少天;
    每种球至少有一个的概率大于等于pi/2000;
    这里pi<=1000

    【题解】

    动态规划;
    考虑按天划分状态;
    设f[i][j]表示第i天一共有j种球的概率;
    则第i天考虑两种情况
    1.拿到了一个新的球,从原来的j-1种球变成了j种球->概率是(k-j+1)/k
    2.拿到了原先就有的球,原来的j种球,球类总数不变,天数增加了1->概率是j/k
    则有动态转移方程
    f[i][j] = f[i-1][j-1]*(k-j+1)/k+f[i-1][j]*j/k;
    直到f[i][k]>1/2就好了;
    因为pi最大为1000,而分母为2000;
    数组第一维开多大??
    1000*10
    为什么??

    是因为循环次数吧.
    或者你再开大一点也没关系:->中间break掉就好
    只要不超时就好;
    可以预处理出1..1000的答案;
    扫一遍就可以了

    【Number Of WA

    1

    【完整代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define mp make_pair
    #define ps push_back
    #define fi first
    #define se second
    #define rei(x) scanf("%d",&x)
    #define rel(x) scanf("%lld",&x)
    #define ref(x) scanf("%lf",&x)
    
    typedef pair<int, int> pii;
    typedef pair<LL, LL> pll;
    
    const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 };
    const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 };
    const double pi = acos(-1.0);
    const int N = 1e3+100;
    
    int k, q,ans[N];
    double f[N * 10][N];
    
    int main()
    {
        //freopen("F:\rush.txt", "r", stdin);
        rei(k), rei(q);
        f[0][0] = 1;
        rep1(i, 1, 10000)
        {
            rep1(j, 1, k)
                f[i][j] = f[i - 1][j - 1] * ((k - j + 1)*1.0 / (1.0*k)) + f[i - 1][j] * (j*1.0 / (1.0*k));
            if (f[i][k] > 0.5) break;
        }
        int now = 1;
        rep1(i, 1, 1000)
        {
            while (f[now][k] * 2000 < i)
                now++;
            ans[i] = now;
        }
        while (q--)
        {
            int x;
            rei(x);
            cout << ans[x] << endl;
        }
        //printf("
    %.2lf sec 
    ", (double)clock() / CLOCKS_PER_SEC);
        return 0;
    }
  • 相关阅读:
    云原生生态周报 Vol. 16 | CNCF 归档 rkt,容器运行时“上古”之战老兵凋零
    Knative 基本功能深入剖析:Knative Eventing 之 Sequence 介绍
    基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?
    Serverless 的喧哗与骚动(一)附Serverless行业发展回顾
    239. Sliding Window Maximum
    237. Delete Node in a Linked List
    146. LRU Cache
    140. Word Break II
    165. Compare Version Numbers
    258. Add Digits
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626466.html
Copyright © 2011-2022 走看看