• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Codeforces 865C Gotta Go Fast 二分 + 期望dp (看题解)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

第一次看到这种骚东西, 期望还能二分的啊???

因为存在重置的操作, 所以我们再dp的过程中有环存在。

为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ]的值进行比较。

这样看着好像很不合理, 但实际上比较这两个值, 你能推倒出当前二分的值合不合法。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long

using namespace std;

const int N = 1e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1000000007;
const double eps = 1e-6;
const double PI = acos(-1);

int n, R, F[N], S[N], up;
double P[N];
double dp[50 + 7][50 * 100 + 7];

double dfs(int i, int j, double x) {
    if(i == n) {
        if(j <= R) return 0;
        else return x;
    }
    if(dp[i][j] + eps > 0) return dp[i][j];
    double T1 = P[i + 1] * (dfs(i + 1, j + F[i + 1], x) + F[i + 1]) + (1 - P[i + 1]) * (dfs(i + 1, j + S[i + 1], x) + S[i + 1]);
    dp[i][j] = min(T1, x);
    return dp[i][j];
}

bool check(double x) {
    for(int i = 0; i <= n; i++)
        for(int j = 0; j <= up; j++)
            dp[i][j] = -1;
    if(dfs(0, 0, x) < x) return true;
    else return false;
}
int main() {
    scanf("%d%d", &n, &R);
    for(int i = 1; i <= n; i++) {
        scanf("%d%d%lf", &F[i], &S[i], &P[i]);
        P[i] /= 100;
        up += S[i];
    }
    double low = n, high = 5e8;
    for(int o = 1; o <= 100; o++) {
        double mid = (low + high) / 2;
        if(check(mid)) high = mid;
        else low = mid;
    }
    printf("%.12f\n", (low + high) / 2);
    return 0;
}

/*
*/

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[CF865C]Gotta Go Fast发布时间:2022-07-10
下一篇:
CF865C Gotta Go Fast发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap