「加油站」優先佇列貪心3題

2021-07-27 05:52:09 字數 1434 閱讀 6062

概括起來就是前m個里一定有n個的問題,可以追溯到很經典的乙個題:一輛車經過幾個加油站,每個加油站有**不同的一定量油,開車要消耗油,問至少多少錢到終點。做法就是先假裝不加,油不夠了再往前面找最便宜的加油站加,用乙個優先佇列維護即可。這類題的難點在於抽象出這個模型往往隱藏得很深,要看出來才行。

#include 

using namespace std;

char str[50500];

int main()

int a, b;

long long ans=0;

int sta=0;

if(str[1]==')')

else

if(str[1]=='?')

priority_queueint, int> >pq;

for(int i=1;i2;i++)

else

if(str[2

*i]=='(')

else

if(str[2

*i+1]==')')

else

if(str[2

*i+1]=='(')

else

while(sta<0)

pairtmp=pq.top();

pq.pop();

sta+=2;

ans-=tmp.first;

str[tmp.second]='(';}}

if(sta>0)

if(str[l]=='(')

else

if(str[l]=='?')

printf("%lld\n%s\n", ans, str+1);

}

d

#include 

using

namespace

std;

int n;

int a[105000];

int b[105000];

int c[105000];

bool cmp(int x, int y)

int main()

while(!pq.empty())

printf("%lld\n", ans);

}

#include 

using

namespace

std;

typedef

long

long ll;

ll n, m;

ll c[105000];

ll w[105000];

ll s[105000];

int main()

else}}

printf("%lld\n", dis);

for(int i=1;i<=n;i++)

}

074 加油站問題(優先佇列)

加油站問題,一輛車在每個加油站可以加一定數量的油,郵箱容量沒有上限,走乙個單位的路程消耗乙個單位的油量,問汽車是否能夠到達終點,如果可以,最少加幾次油?從這個角度思考問題較方便 當汽車經過某個加油站時,只把油裝在車上,並不加入油箱。等到油箱為空時再加油,與在加油站加油的效果一致。挑戰程式競賽 第二版...

加油站(貪心演算法)

一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應 在哪些加油站停靠加油,使沿途加油次數最少。對於給定的n n 5000 和k k 1000 個加油站位置,程式設計計算最少加油次數。並證明演算法能產生乙個最優解。要求 輸入 第一行有2個正整數n和k,表示汽車加滿油後可行駛...

LeetCode貪心 134 加油站

題目描述 在一條環路上有 n 個加油站,其中第 i 個加油站有汽油gas i 公升。你有一輛油箱容量無限的的汽車,從第i 個加油站開往第i 1 個加油站需要消耗汽油cost i 公升。你從其中的乙個加油站出發,開始時油箱為空。如果你可以繞環路行駛一周,則返回出發時加油站的編號,否則返回 1。說明 示...