優先佇列貪心

2021-08-01 07:07:47 字數 2400 閱讀 1263

最近做了幾個用優先佇列進行貪心的題目,這裡寫下來,以免忘了。

1、cf 799 b

每次選最便宜的衣服,沒什麼好說的,一發過

**:

#include

#include

#include

#include

#include

#define n 6005

#define inf 0x3f3f3f3f

#include

#include

#include

#include

#include

#define mod 1000000007

double pi=acos(-1.0);

typedef long long ll;

using namespace std;

typedef pairint> pr;

priority_queue,greater> q[4];

ll p[200050],a[200050],b[200050];

int vis[200050];

intm,c,n;

int main()

for(int i=0;i"%d",&a[i]);

}for(int i=0;i"%d",&b[i]);

}for(int i=0;iq[a[i]].push(make_pair(p[i],i));

q[b[i]].push(make_pair(p[i],i));

}cin>>m;

for(int i=0;i}

if(!flag)

pr temp=q[c].top();

printf("%i64d ",temp.first);

q[c].pop();

vis[temp.second]=1;

}return

0;}

2、cf 3d d. least cost bracket sequence

把所有的『?』都換成右括號,放進佇列,當不滿足對稱時選cost最小的就可以了

**:

#include

#include

#include

#include

#include

#define n 6005

#define inf 0x3f3f3f3f

#include

#include

#include

#include

#include

#define mod 1000000007

double pi=acos(-1.0);

typedef

long

long ll;

using

namespace

std;

char s[50050];

int a,b;

typedef pair p;

int main()

priority_queueq;

for(int i=0;iif(s[i]=='(') zuo++;

else

if(s[i]==')') zuo--;

else

if(zuo<0)

p temp=q.top();

q.pop();

zuo+=2;

ans-=temp.first;

s[temp.second]='(';}}

if(zuo>0)

else

printf("%i64d\n%s\n",ans,s);

return

0;}

3、zoj 3699

經典的加油問題

**:

#include 

#include

#include

#include

#include

#include

#include

using namespace std;

const int maxn = 200005;

const int inf = 1111111111;

long long q[maxn],head,tail,cost[maxn];

long long p[maxn];

int main()

if(flag == 0)

head = tail = 0;

long long ans = 0;

long long gas=0;

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

else

} }

cout0;

}

貪心加優先佇列

消滅兔子 李陶冶 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子...

Meteor Flow(貪心 優先佇列)

meteor flow 貪心 優先佇列 ac code 1 既然只要發射一次,就可以打掉,那麼就要打掉那個耗費經歷最多的,以保留更多的精力 所以用優先佇列,先彈出耗費經歷最多的 2 其次,只要有能力打就先不發射 所以先入棧 34 include 5 include 6 include 7 inclu...

合併果子 貪心 優先佇列

c 合併果子 crawling in process.crawling failed time limit 1000msmemory limit 131072kb64bit io format lld llu submit status description 現在有n堆果子,第i堆有ai個果子。現...