概括起來就是前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。說明 示...