ABC214 C - Distribution(优先队列bfs)

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABC214 C - Distribution(优先队列bfs)相关的知识,希望对你有一定的参考价值。

题意:

解法:

可以将问题抽象成一个最短路问题:
超级源点到每个点的距离为t[i],
点i到点i+1的距离为s[i],
求超级源点到每个点的最短路.

由于对于点i,只有一条去点i+1的边,所以写优先队列+bfs就可以了,
不需要码最短路算法.

code:

#include<bits/stdc++.h>
#define int long long
#define PI pair<int,int>
using namespace std;
const int maxm=2e5+5;
int s[maxm];
int t[maxm];
int mark[maxm];
int n;
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>s[i];
    for(int i=1;i<=n;i++)cin>>t[i];
    priority_queue<PI,vector<PI>,greater<PI> >q;
    for(int i=1;i<=n;i++)q.push({t[i],i});
    while(q.size()){
        int x=q.top().second;
        int y=q.top().first;
        q.pop();
        if(mark[x])continue;
        mark[x]=y;
        int nt=x+1;
        if(nt==n+1)nt=1;
        q.push({mark[x]+s[x],nt});
    }
    for(int i=1;i<=n;i++)cout<<mark[i]<<endl;
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);
    solve();
    return 0;
}

以上是关于ABC214 C - Distribution(优先队列bfs)的主要内容,如果未能解决你的问题,请参考以下文章

ABC214 D - Sum of Maximum Weights(并查集)

AtCoder Beginner Contest 214(补题)

[ABC214H]Collecting

[ABC214G]Three Permutations

ABC214 E - Packing Under Range Regulations(堆,贪心)

Chi-Square Statistic/Distribution