R:魔兽世界终极版
描述
魔獸世界的西面是紅魔軍的司令部,東面是藍魔軍的司令部。兩個司令部之間是依次排列的若干城市,城市從西向東依次編號為1,2,3 .... N ( N <= 20 )。紅魔軍的司令部算作編號為0的城市,藍魔軍的司令部算作編號為N+1的城市。司令部有生命元,用于制造武士。
兩軍的司令部都會制造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五種。每種武士都有編號、生命值、攻擊力這三種屬性。
雙方的武士編號都是從1開始計算。紅方制造出來的第 n 個武士,編號就是n。同樣,藍方制造出來的第 n 個武士,編號也是n。
武士在剛降生的時候有一個初始的生命值,生命值在戰斗中會發生變化,如果生命值減少到0(生命值變為負數時應當做變為0處理),則武士死亡(消失)。
有的武士可以擁有武器。武器有三種,sword, bomb,和arrow,編號分別為0,1,2。
武士降生后就朝對方司令部走,在經過的城市如果遇到敵人(同一時刻每個城市最多只可能有1個藍武士和一個紅武士),就會發生戰斗。每次戰斗只有一方發起主動進攻一次。被攻擊者生命值會減去進攻者的攻擊力值和進攻者手中sword的攻擊力值。被進攻者若沒死,就會發起反擊,被反擊者的生命值要減去反擊者攻擊力值的一半(去尾取整)和反擊者手中sword的攻擊力值。反擊可能致敵人于死地。
如果武士在戰斗中殺死敵人(不論是主動進攻殺死還是反擊殺死),則其司令部會立即向其發送8個生命元作為獎勵,使其生命值增加8。當然前提是司令部得有8個生命元。如果司令部的生命元不足以獎勵所有的武士,則優先獎勵距離敵方司令部近的武士。
如果某武士在某城市的戰斗中殺死了敵人,則該武士的司令部立即取得該城市中所有的生命元。注意,司令部總是先完成全部獎勵工作,然后才開始從各個打了勝仗的城市回收生命元。對于因司令部生命元不足而領不到獎勵的武士,司令部也不會在取得戰利品生命元后為其補發獎勵。
如果一次戰斗的結果是雙方都幸存(平局),則雙方都不能拿走發生戰斗的城市的生命元。
城市可以插旗子,一開始所有城市都沒有旗子。在插紅旗的城市,以及編號為奇數的無旗城市,由紅武士主動發起進攻。在插藍旗的城市,以及編號為偶數的無旗城市,由藍武士主動發起進攻。
當某個城市有連續兩場戰斗都是同一方的武士殺死敵人(兩場戰斗之間如果有若干個戰斗時刻并沒有發生戰斗,則這兩場戰斗仍然算是連續的;但如果中間有平局的戰斗,就不算連續了) ,那么該城市就會插上勝方的旗幟,若原來插著敗方的旗幟,則敗方旗幟落下。旗幟一旦插上,就一直插著,直到被敵人更換。一個城市最多只能插一面旗幟,旗幟沒被敵人更換前,也不會再次插同顏色的旗。
各種武器有其特點:
sword武器的初始攻擊力為擁有它的武士的攻擊力的20%(去尾取整)。但是sword每經過一次戰斗(不論是主動攻擊還是反擊),就會變鈍,攻擊力變為本次戰斗前的80% (去尾取整)。sword攻擊力變為0時,視為武士失去了sword。如果武士降生時得到了一個初始攻擊力為0的sword,則視為武士沒有sword.
arrow有一個攻擊力值R。如果下一步要走到的城市有敵人,那么擁有arrow的武士就會放箭攻擊下一個城市的敵人(不能攻擊對方司令部里的敵人)而不被還擊。arrow使敵人的生命值減少R,若減至小于等于0,則敵人被殺死。arrow使用3次后即被耗盡,武士失去arrow。兩個相鄰的武士可能同時放箭把對方射死。
擁有bomb的武士,在戰斗開始前如果判斷自己將被殺死(不論主動攻擊敵人,或者被敵人主動攻擊都可能導致自己被殺死,而且假設武士可以知道敵人的攻擊力和生命值),那么就會使用bomb和敵人同歸于盡。武士不預測對方是否會使用bomb。
武士使用bomb和敵人同歸于盡的情況下,不算是一場戰斗,雙方都不能拿走城市的生命元,也不影響城市的旗幟。
不同的武士有不同的特點。
dragon可以擁有一件武器。編號為n的dragon降生時即獲得編號為 n%3 的武器。dragon還有“士氣”這個屬性,是個浮點數,其值為它降生后其司令部剩余生命元的數量除以造dragon所需的生命元數量。dragon 在一次在它主動進攻的戰斗結束后,如果還沒有戰死,而且士氣值大于0.8,就會歡呼。dragon每取得一次戰斗的勝利(敵人被殺死),士氣就會增加0.2,每經歷一次未能獲勝的戰斗,士氣值就會減少0.2。士氣增減發生在歡呼之前。
ninja可以擁有兩件武器。編號為n的ninja降生時即獲得編號為 n%3 和 (n+1)%3的武器。ninja 挨打了也從不反擊敵人。
iceman有一件武器。編號為n的iceman降生時即獲得編號為 n%3 的武器。iceman 每前進兩步,在第2步完成的時候,生命值會減少9,攻擊力會增加20。但是若生命值減9后會小于等于0,則生命值不減9,而是變為1。即iceman不會因走多了而死。
lion 有“忠誠度”這個屬性,其初始值等于它降生之后其司令部剩余生命元的數目。每經過一場未能殺死敵人的戰斗,忠誠度就降低K。忠誠度降至0或0以下,則該lion逃離戰場,永遠消失。但是已經到達敵人司令部的lion不會逃跑。Lion在己方司令部可能逃跑。lion 若是戰死,則其戰斗前的生命值就會轉移到對手身上。所謂“戰斗前”,就是每個小時的40分前的一瞬間。
wolf降生時沒有武器,但是在戰斗中如果獲勝(殺死敵人),就會繳獲敵人的武器,但自己已有的武器就不繳獲了。被繳獲的武器當然不能算新的,已經被用到什么樣了,就是什么樣的。
以下是不同時間會發生的不同事件:
在每個整點,即每個小時的第0分, 雙方的司令部中各有一個武士降生。
紅方司令部按照 iceman、lion、wolf、ninja、dragon 的順序制造武士。
藍方司令部按照 lion、dragon、ninja、iceman、wolf 的順序制造武士。
制造武士需要生命元。
制造一個初始生命值為 m 的武士,司令部中的生命元就要減少 m 個。
如果司令部中的生命元不足以制造某武士,那么司令部就等待,直到獲得足夠生命元后的第一個整點,才制造該武士。例如,在2:00,紅方司令部本該制造一個 wolf ,如果此時生命元不足,那么就會等待,直到生命元足夠后的下一個整點,才制造一個 wolf。
在每個小時的第5分,該逃跑的lion就在這一時刻逃跑了。
在每個小時的第10分:所有的武士朝敵人司令部方向前進一步。即從己方司令部走到相鄰城市,或從一個城市走到下一個城市。或從和敵軍司令部相鄰的城市到達敵軍司令部。
在每個小時的第20分:每個城市產出10個生命元。生命元留在城市,直到被武士取走。
在每個小時的第30分:如果某個城市中只有一個武士,那么該武士取走該城市中的所有生命元,并立即將這些生命元傳送到其所屬的司令部。
在每個小時的第35分,擁有arrow的武士放箭,對敵人造成傷害。放箭事件應算發生在箭發出的城市。注意,放箭不算是戰斗,因此放箭的武士不會得到任何好處。武士在沒有敵人的城市被箭射死也不影響其所在城市的旗幟更換情況。
在每個小時的第38分,擁有bomb的武士評估是否應該使用bomb。如果是,就用bomb和敵人同歸于盡。
在每個小時的第40分:在有兩個武士的城市,會發生戰斗。 如果敵人在5分鐘前已經被飛來的arrow射死,那么仍然視為發生了一場戰斗,而且存活者視為獲得了戰斗的勝利。此情況下不會有“武士主動攻擊”,“武士反擊”,“武士戰死”的事件發生,但戰斗勝利后應該發生的事情都會發生。如Wolf一樣能繳獲武器,旗幟也可能更換,等等。在此情況下,Dragon同樣會通過判斷是否應該輪到自己主動攻擊來決定是否歡呼。
在每個小時的第50分,司令部報告它擁有的生命元數量。
在每個小時的第55分,每個武士報告其擁有的武器情況。
武士到達對方司令部后就算完成任務了,從此就呆在那里無所事事。
任何一方的司令部里若是出現了2個敵人,則認為該司令部已被敵人占領。
任何一方的司令部被敵人占領,則戰爭結束。戰爭結束之后就不會發生任何事情了。
給定一個時間,要求你將從0點0分開始到此時間為止的所有事件按順序輸出。事件及其對應的輸出樣例如下:
?
1) 武士降生輸出樣例: 000:00 blue lion 1 born
表示在 0點0分,編號為1的藍魔lion武士降生
如果造出的是dragon,那么還要多輸出一行,例:
000:00 blue dragon 1 born
Its morale is 23.34
表示該該dragon降生時士氣是23. 34(四舍五入到小數點后兩位)
如果造出的是lion,那么還要多輸出一行,例:
000:00 blue lion 1 born
Its loyalty is 24
表示該lion降生時的忠誠度是24
輸出樣例: 000:05 blue lion 1 ran away?
表示在 0點5分,編號為1的藍魔lion武士逃走
輸出樣例: 000:10 red iceman 1 marched to city 1 with 20 elements and force 30
表示在 0點10分,紅魔1號武士iceman前進到1號城市,此時他生命值為20,攻擊力為30
對于iceman,輸出的生命值和攻擊力應該是變化后的數值
輸出樣例: 000:35 blue dragon 1 shot
表示在 0點35分,編號為1的藍魔dragon武士射出一支箭。如果射出的箭殺死了敵人,則應如下輸出:
000:35 blue dragon 1 shot and killed red lion 4
表示在 0點35分,編號為1的藍魔dragon武士射出一支箭,殺死了編號為4的紅魔lion。
輸出樣例: 000:38 blue dragon 1 used a bomb and killed red lion 7
表示在 0點38分,編號為1的藍魔dragon武士用炸彈和編號為7的紅魔lion同歸于盡。
輸出樣例:000:40 red iceman 1 attacked blue lion 1 in city 1 with 20 elements and force 30
表示在0點40分,1號城市中,紅魔1號武士iceman 進攻藍魔1號武士lion,在發起進攻前,紅魔1號武士iceman生命值為20,攻擊力為 30
輸出樣例:001:40 blue dragon 2 fought back against red lion 2 in city 1?
表示在1點40分,1號城市中,藍魔2號武士dragon反擊紅魔2號武士lion
輸出樣例:001:40 red lion 2 was killed in city 1
被箭射死的武士就不會有這一條輸出。
輸出樣例:003:40 blue dragon 2 yelled in city 4
輸出樣例:001:40 blue dragon 2 earned 10 elements for his headquarter
輸出不包括在30分不是通過戰斗獲取的elements
輸出樣例:004:40 blue flag raised in city 4
輸出樣例:001:10 red iceman 1 reached blue headquarter with 20 elements and force 30
(此時他生命值為20,攻擊力為30)對于iceman,輸出的生命值和攻擊力應該是變化后的數值
輸出樣例:003:10 blue headquarter was taken
000:50 100 elements in red headquarter?
000:50 120 elements in blue headquarter
表示在0點50分,紅方司令部有100個生命元,藍方有120個
000:55 blue wolf 2 has arrow(2),bomb,sword(23)
000:55 blue wolf 4 has no weapon
000:55 blue wolf 5 has sword(20)
表示在0點55分,藍魔2號武士wolf有一支arrow(這支arrow還可以用2次),一個bomb,還有一支攻擊力為23的sword。
藍魔4號武士wolf沒武器。
藍魔5號武士wolf有一支攻擊力為20的sword。
交代武器情況時,次序依次是:arrow,bomb,sword。如果沒有某種武器,某種武器就不用提。報告時,先按從西向東的順序所有的紅武士報告,然后再從西向東所有的藍武士報告。
輸出事件時:
首先按時間順序輸出;
同一時間發生的事件,按發生地點從西向東依次輸出. 武士前進的事件, 算是發生在目的地。
在一次戰斗中有可能發生上面的 6 至 11 號事件。這些事件都算同時發生,其時間就是戰斗開始時間。一次戰斗中的這些事件,序號小的應該先輸出。
兩個武士同時抵達同一城市,則先輸出紅武士的前進事件,后輸出藍武士的。
顯然,13號事件發生之前的一瞬間一定發生了12號事件。輸出時,這兩件事算同一時間發生,但是應先輸出12號事件
雖然任何一方的司令部被占領之后,就不會有任何事情發生了。但和司令部被占領同時發生的事件,全都要輸出。
輸入
第一行是t,代表測試數據組數
每組樣例共三行。
第一行,五個整數 M,N,R,K, T。其含義為:
每個司令部一開始都有M個生命元( 1 <= M <= 10000)
兩個司令部之間一共有N個城市( 1 <= N <= 20 )
arrow的攻擊力是R
lion每經過一場未能殺死敵人的戰斗,忠誠度就降低K。
要求輸出從0時0分開始,到時間T為止(包括T) 的所有事件。T以分鐘為單位,0 <= T <= 5000
第二行:五個整數,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它們都大于0小于等于10000
第三行:五個整數,依次是 dragon 、ninja、iceman、lion、wolf 的攻擊力。它們都大于0小于等于10000
輸出
對每組數據,先輸出一行:
Case n:
如對第一組數據就輸出 Case1:
然后按恰當的順序和格式輸出到時間T為止發生的所有事件。每個事件都以事件發生的時間開頭,時間格式是“時: 分”,“時”有三位,“分”有兩位。
樣例輸入
1 20 1 10 10 1000 20 20 30 10 20 5 5 5 5 5樣例輸出
Case 1: 000:00 blue lion 1 born Its loyalty is 10 000:10 blue lion 1 marched to city 1 with 10 elements and force 5 000:30 blue lion 1 earned 10 elements for his headquarter 000:50 20 elements in red headquarter 000:50 20 elements in blue headquarter 000:55 blue lion 1 has no weapon 001:00 blue dragon 2 born Its morale is 0.00 001:10 blue lion 1 reached red headquarter with 10 elements and force 5 001:10 blue dragon 2 marched to city 1 with 20 elements and force 5 001:30 blue dragon 2 earned 10 elements for his headquarter 001:50 20 elements in red headquarter 001:50 10 elements in blue headquarter 001:55 blue lion 1 has no weapon 001:55 blue dragon 2 has arrow(3) 002:10 blue dragon 2 reached red headquarter with 20 elements and force 5 002:10 red headquarter was taken?
Code:
?
轉載于:https://www.cnblogs.com/ruruozhenhao/p/10232555.html
總結
- 上一篇: redis 系列26 Cluster高可
- 下一篇: 手把手从python安装到setupto