劍與魔法 dragons

2021-10-09 09:40:00 字數 1930 閱讀 2910

\operatorname

ssl比賽1

142萬老師聽說某大國很流行穿越,於是他就想寫乙個關於穿越的劇本。

閒話休提。話說老師穿越到了某乙個劍與魔法的大陸。因為如此這般,所以老師從維娜艾那裡得到了預言。老師一共被告知了若干件按順序結算的事件。這些事件分為兩類:戰役事件(case)、穿越回去事件(end)。戰役事件可以選擇是否參加,參加了之後會獲得一定的金錢。每個end事件發生需要至少參加一定數量的戰役事件。特別的是,end事件如果滿足要求就會強制發生。老師希望在大陸玩個夠,所以他要求只有最後乙個end事件會發生。老師希望獲得最多的金錢,所以求助於你。

第一行乙個數 n

nn ,表示輸入檔案有多少行。

接下來每一行用空格隔開乙個字元和乙個整數。字元為 「c」 表示戰役事件,接下來的整數表示這次漲rp順帶有多少錢;字元為「e」表示穿越回去事件,接下來的整數代表至少要漲多少rp。最後乙個事件保證是end事件。

第一行乙個整數,最多金錢數目。

若不可能則輸出 −1-1

−1。

5

c 10

c 12

e 2c 1

e 2

13
30

%30\%

30% 的資料滿足 n

<=20

n<=20

n<=2

0 60

%60\%

60% 的資料滿足 n

<=1

,000

n<=1,000

n<=1

,000

100%

100\%

100%

的資料滿足 n

<

=200

,000

n<=200,000

n<=2

00,0

00每次漲rp事件賞金不超過 10

,000

10,000

10,000

穿越事件的要求不超過 200

,000

200,000

200,00

0這道題就是一道小根堆。

打仗就是放乙個值進去,不是最後乙個離開就是不能離開,就是把小根堆的堆頂不斷彈出到小於等於 x−1

x-1x−

1 個。( x

xx 就是給出的要漲多少rp)

(這樣就是盡可能的打最大的仗)

當然最後乙個離開就是要離開,如果最後盡可能打最多的仗也達不到要求,就是 −1-1

−1。否則就是小根堆中所有值的和。

( gjy 大佬竟然用 dp 的方法 n方過十萬,%%%)

(不過聽說是因為資料太水)

#include

#include

using

namespace std;

priority_queue <

int, vector<

int>

, greater<

int>

> q;

int n, a[

200001

], las, ans;

char c[

200001];

intmain()

for(

int i =

1; i < las; i++

)//所有能經歷的事情

if(c[i]

=='c'

)else

if(q.

size()

< a[las]

)printf

("-1");

//無論怎樣都不能在最後一次end走

else

printf

("%d"

, ans)

;//輸出

}return0;

}

劍與魔法 dragons 優先佇列

題目描述 萬老師聽說某大國很流行穿越,於是他就想寫乙個關於穿越的劇本。閒話休提。話說老師穿越到了某乙個劍與魔法的大陸。因為如此這般,所以老師從維娜艾那裡得到了預言。老師一共被告知了若干件按順序結算的事件。這些事件分為兩類 戰役事件 case 穿越回去事件 end 戰役事件可以選擇是否參加,參加了之後...

c 自帶堆 劍與魔法 dragons

這個題目看上去沒複製完的樣子 還有c 自帶的堆 真香,nb!萬老師聽說某大國很流行穿越,於是他就想寫乙個關於穿越的劇本。閒話休提。話說老師穿越到了某乙個劍與魔法的大陸。因為如此這般,所以老師從維娜艾那裡得到了預言。老師一共被告知了若干件按順序結算的事件。這些事件分為兩類 戰役事件 case 穿越回去...

JZOJ3487 劍與魔法

description 萬老師聽說某大國很流行穿越,於是他就想寫乙個關於穿越的劇本。閒話休提。話說老師穿越到了某乙個劍與魔法的大陸。因為如此這般,所以老師從維娜艾那裡得到了預言。老師一共被告知了若干件按順序結算的事件。這些事件分為兩類 戰役事件 case 穿越回去事件 end 戰役事件可以選擇是否參...