题解 | #D-Link with Game Glitch#

Link with Game Glitch

https://ac.nowcoder.com/acm/contest/33187/D

D-Link with Game Glitch

题目

https://ac.nowcoder.com/acm/contest/33187/D

算法

①二分答案+SPFA判负环

②Karp的最小平均权重环路算法

题解

这里考虑法②

题目有对于配方ii有: 以aia_i个物品 bib_i为原料,制造cic_i个物品did_i为产品

ai×bici×dia_i\times b_i\to c_i \times d_i

可以理解为对于配方ii有: 以aici\frac{a_i}{c_i}个物品 bib_i为原料,制造11个物品did_i为产品

aici×bidi\frac{a_i}{c_i}\times b_i \to d_i

对于连续kk个配方可以由配方的系数乘积从原料制造出产品

ikaici\prod_{i}^k\frac{a_i}{c_i} 原料\to 产品

若某物品经过kk道配方, 最终可以制造自己, 称为一循环配方

ikaici\prod_{i}^k\frac{a_i}{c_i} 物品\to 物品

nn种物品为点, mm种配方为边, aici\frac{a_i}{c_i}为边权建立有向图, 循环配方表现为环

设循环配方中任意物品原有数量为xx,个 则每次循环后可变为为xikaici\frac {x}{\prod_{i}^k\frac{a_i}{c_i}}个,

要使物品不会变多, 则必须xxikaicix≥\frac {x}{\prod_{i}^k\frac{a_i}{c_i}}, 也即

ikaici1\prod_{i}^k\frac{a_i}{c_i}≥1

引入生产修正参数ww

ai×biw×ci×dia_i\times b_i\to w\times c_i \times d_i

可以理解为

aiwci×bidi\frac{a_i}{wc_i}\times b_i \to d_i

可推得

ikaiwci\prod_{i}^k\frac{a_i}{wc_i} 物品\to 物品

ww提出有

1wkikaici\frac1{w^k}\prod_{i}^k\frac{a_i}{c_i} 物品\to 物品

重复上文推论

nn种物品为点, mm种配方为边, aiwci\frac{a_i}{wc_i}为边权建立有向图, 循环配方表现为环

设循环配方中任意物品原有数量为xx,个 则每次循环后可变为为x1wkikaici\frac {x}{\frac1{w^k}\prod_{i}^k\frac{a_i}{c_i}}个,

要使物品不会变多, 则必须xx1wkikaicix≥\frac {x}{\frac1{w^k}\prod_{i}^k\frac{a_i}{c_i}}, 也即

ikaiciwk\prod_{i}^k\frac{a_i}{c_i}≥w^k

对于不同的环有不同的ikaici\prod_{i}^k\frac{a_i}{c_i}, 即要求在每一个环中都满足上式,即

min(ikaici)wk\min(\prod_{i}^k\frac{a_i}{c_i})≥w^k

且要求ww取最大, 则要求

min(ikaici)=wk\min(\prod_{i}^k\frac{a_i}{c_i})=w^k

化简得

w=min(ikaicik)w=\min\left(\sqrt[k]{\prod_{i}^k\frac{a_i}{c_i}}\right)

其中连乘可用对数处理

ln(ikaici)=ikln(aici)\ln(\prod_{i}^k\frac{a_i}{c_i})=\sum_i^k\ln(\frac{a_i}{c_i})

化简得

ikaici=eikln(aici)\prod_{i}^k\frac{a_i}{c_i}=e^{\sum_i^k\ln(\frac{a_i}{c_i})}

即要求

wk=emin(ikln(aici))w^k=e^{\min(\sum_i^k\ln(\frac{a_i}{c_i}))}

最终

w=min(eikln(aici)k)w=\min(\sqrt[k]{e^{\sum_i^k\ln(\frac{a_i}{c_i})}})
w=exp(min(ikln(aici)k))w=\exp\left(\min(\frac{\sum_i^k\ln(\frac{a_i}{c_i})}{k})\right)

则理解为求环的最小平均权重

ln(aici)\ln(\frac{a_i}{c_i})为边权建图G(V,E)G(V,E)

KarpKarp的最小平均权重环路算法

F[k][v]F[k][v]为从任意点出发,经过kk条边到达vv点的最短距离, 对每条边uvu\to v

F[k][v]=eE{F[k1][u]+w[u][v]}F[k][v]=\min_{e\in E}\{F[k-1][u]+w[u][v]\}
ans=vV{0kn1{F[n][v]F[k][v]nk}}ans = \min_{v\in V}\{\max_{0≤k≤n-1}\{\frac{F[n][v]-F[k][v]}{n-k}\}\}

详细请参考***********************************************************

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2005;
int n,m,b,d;
double a,c,ans;
double dp[maxn][maxn];
struct edge {
    int u;
    int v;
    double w;
};
vector<edge> edges;
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>a>>b>>c>>d;
        edges.push_back({b,d,log(a/c)});
    }
    for (int i=1;i<=n;i++) {
        for (auto [u,v,w] : edges) {
            dp[i][v] = min(dp[i][v],dp[i-1][u]+w);
        }
    }
    for(int i=1;i<=n;i++){
        double t = -INFINITY;
        for(int j=0;j<n;j++){
            double dis = (dp[n][i]-dp[j][i]);
            int k = (n-j);
            t = max(t,dis/k);
        }
        ans = min(t,ans);
    }
    printf("%.15lf\n",exp(ans));
    return 0;
}

全部评论
不对啊,你这代码都过不了
点赞 回复 分享
发布于 2022-08-18 19:29 湖北
最后一步是不是有点问题
点赞 回复 分享
发布于 2022-07-24 09:43
你都把过程写这么清楚了,不会写?
点赞 回复 分享
发布于 2022-07-24 09:21

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
2950次浏览 42人参与
# HR最不可信的一句话是__ #
985次浏览 32人参与
# 巨人网络春招 #
11477次浏览 224人参与
# 春招至今,你的战绩如何? #
14489次浏览 135人参与
# AI面会问哪些问题? #
874次浏览 21人参与
# 你的实习产出是真实的还是包装的? #
2588次浏览 52人参与
# 米连集团26产品管培生项目 #
7010次浏览 224人参与
# 沪漂/北漂你觉得哪个更苦? #
1076次浏览 29人参与
# 你做过最难的笔试是哪家公司 #
1084次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2630次浏览 49人参与
# XX请雇我工作 #
51141次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7950次浏览 43人参与
# 简历第一个项目做什么 #
32035次浏览 357人参与
# 简历中的项目经历要怎么写? #
310850次浏览 4257人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152795次浏览 888人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187527次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64483次浏览 860人参与
# 如果重来一次你还会读研吗 #
229960次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178175次浏览 889人参与
# 你怎么看待AI面试 #
180611次浏览 1291人参与
# 正在春招的你,也参与了去年秋招吗? #
364105次浏览 2640人参与
# 腾讯音乐求职进展汇总 #
160808次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务