2014 8 2模擬賽 打地鼠遊戲

2021-06-23 01:22:15 字數 2636 閱讀 9831

題目描述:

最近2320學長經常玩這個遊戲,以至於敲擊每個地鼠只要1秒。他在想如何敲擊能使總分最大。

輸入描述:

輸入包含3行,第一行包含乙個整數n(1<=n<=100000)表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間(maxt<=50000),第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v(v<=1000)。每行中第i個數都表示第i個地鼠的資訊。

樣例輸入:

5 3 6 1 4

7 9 2 1 5

樣例輸出:

資料範圍:

30%的資料保證n<=100, t<=500,v<=50

60%的資料保證 n<=10000,t<=3000,v<=500

100%的資料保證n<=100000,t<=5000,v<=1000

原題是wikioi1052地鼠遊戲,題目如下

王鋼是一名學習成績優異的學生,在平時的學習中,他總能利用一切時間認真高效地學習,他不但學習刻苦,而且善於經常總結、完善自己的學習方法,所以他總能在每次考試中得到優異的分數,這一切很大程度上是由於他是乙個追求效率的人。

地鼠遊戲是一項需要反應速度和敏捷判斷力的遊戲。遊戲開始時,會在地板上一下子冒出很多地鼠來,然後等你用榔頭去敲擊這些地鼠,每個地鼠被敲擊後,將會增加相應的遊戲分值。問題是這些地鼠不會傻傻地等你去敲擊,它總會在冒出一會時間後又鑽到地板下面去(而且再也不上來),每個地鼠冒出後停留的時間可能是不同的,而且每個地鼠被敲擊後增加的遊戲分值也可能是不同,為了勝出,遊戲參與者就必須根據每個地鼠的特性,有選擇地盡快敲擊一些地鼠,使得總的得分最大。

這個極具挑戰性的遊戲王鋼特別喜歡,最近他經常在星期天上午玩這個遊戲,慢慢地他不但敲擊速度越來越快(敲擊每個地鼠所需要的耗時是1

秒),而且他還發現了遊戲的一些特徵,那就是每次遊戲重新開始後,某個地鼠冒出來後停留的時間都是固定的,而且他記錄了每個地鼠被敲擊後將會增加的分值。於是,他在每次遊戲開始後總能有次序地選擇敲擊不同的地鼠,保證每次得到最大的總分值。

輸入包含

3行,第一行包含乙個整數n(

1<=n<=100

)表示有

n個地鼠從地上冒出來,第二行

n個用空格分隔的整數表示每個地鼠冒出後停留的時間,第三行

n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值(

<=100

)。每行中第

i個數都表示第

i個地鼠的資訊。

輸出只有一行乙個整數,表示王鋼所能獲得的最大遊戲總分值。

5

5  3  6  1  4

7  9  2  1  5

24

其實一樣的

我寫的是sort+貪心,結果wa了只有10分o(╯□╰)o因為題意沒理解清楚

我寫的是時限為t的只能在時刻t取到,實際上只要在1到t中取就可以了o(╯□╰)o

然後正解是隨便一種資料結構優化都可以的

首先考慮怎麼處理1到t的情況

如果正著模擬,顯然不可行

那麼只有倒著搜了

這樣一來比如當前是i時刻,已經處理出i+1到mx時刻的最優解,那麼i時刻應該取哪乙個呢

顯然是當前剩下可取的最大的那乙個

顯然時限為1到i-1的不可能在i時刻再取了,那麼剩下時限為i到mx時刻的地鼠了

只要隨便乙個nlogn的資料結構,支援插入、提取並刪除最大值的資料結構都可以

只要在i時刻插入所有時限為i的地鼠,然後提乙個最大的出來刪掉就好了

我寫的treap……比大根堆有優越感

前面本來還有個sort,我就直接寫了個類似邊表的o(n)就好了

#include#include#includeusing namespace std;

struct edgee[200010];

struct treaptree[200010];

int head[100010];

int cnt,n,x,y,mx,root,ans,treesize;

inline int max(int a,int b)

inline void ins(int u,int w)

inline void left_rotate(int &k)

inline void right_rotate(int &k)

void insert(int &now,int x)

if (x <= tree[now].num)

else }

inline int del(int &now)

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}int main()

for(int i=mx;i>=1;i--)

printf("%d",ans);

}

打地鼠遊戲

題目描述 輸入輸入包含3行,第一行包含乙個整數n 1 n 100000 表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間 maxt 50000 第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v v 1000 每行中第i個數都表示第i個地鼠的資訊。輸出輸出...

打地鼠遊戲

時間限制 1 sec 記憶體限制 128 mb 題目描述 輸入輸入包含3行,第一行包含乙個整數n 1 n 100000 表示有n個地鼠從地上冒出來,第二行n個用空格分隔的整數表示每個地鼠冒出後停留的時間 maxt 50000 第三行n個用空格分隔的整數表示每個地鼠被敲擊後會增加的分值v v 1000...

2014 8 2模擬賽 果實計數

題目描述 淘淘家有棵奇怪的蘋果樹,這棵樹共有n 1層,標號為0 n。這棵樹第0層只有乙個節點,為根節點。已知這棵樹為b叉樹,且保證是一顆滿b叉樹。如圖為一顆滿3叉樹。現在,該樹第n層的每個節點上都結出了乙個蘋果,淘淘想知道共結了多少蘋果。由於數量可能很大,答案要求輸出mod k後的結果。輸入描述 給...