爸爸能說什麼。

精靈王座:最後之戰 精靈王座:最後之戰 精靈王座:最後之戰 精靈王座:最後之戰 精靈王座:最後之戰 精靈王座:最後之戰 精靈王座:最後之戰
【題目背景】
《精靈王座》結尾的跑酷十分奪人眼球,雖然小魚和莉雅成功了但情況也 《精靈王座》結尾的跑酷十分奪人眼球,雖然小魚和莉雅成功了但情況也 《精靈王座》結尾的跑酷十分奪人眼球,雖然小魚和莉雅成功了但情況也 《精靈王座》結尾的跑酷十分奪人眼球,雖然小魚和莉雅成功了但情況也 非常兇險。讓我們來幫他,看有沒必勝策略:
影片段簡述:小魚一行人被已經黑化的玫拉困在了暗山谷,她目是 影片段簡述:小魚一行人被已經黑化的玫拉困在了暗山谷,她目是 影片段簡述:小魚一行人被已經黑化的玫拉困在了暗山谷,她目是 得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始得到生命寶玉。 爲了擊敗玫拉,爾等人採納小魚的建議於是跑酷開始每個人都沿着峽谷上的一座橋跑,向對岸前進。玫拉已經被生命寶玉衝昏 每個人都沿着峽谷上的一座橋跑,向對岸前進。玫拉已經被生命寶玉衝昏 每個人都沿着峽谷上的一座橋跑,向對岸前進。玫拉已經被生命寶玉衝昏 了頭腦,不停地向生命寶玉撲去。只有將玫拉吸引到峽谷對岸的熔爐旁小魚才 了頭腦,不停地向生命寶玉撲去。只有將玫拉吸引到峽谷對岸的熔爐旁小魚才 了頭腦,不停地向生命寶玉撲去。只有將玫拉吸引到峽谷對岸的熔爐旁小魚才 了頭腦,不停地向生命寶玉撲去。只有將玫拉吸引到峽谷對岸的熔爐旁小魚才 能消滅她。於是, 衆人輪番傳遞生命寶玉來吸引玫拉的注意並一步靠近對岸能消滅她。於是, 衆人輪番傳遞生命寶玉來吸引玫拉的注意並一步靠近對岸能消滅她。於是, 衆人輪番傳遞生命寶玉來吸引玫拉的注意並一步靠近對岸能消滅她。於是, 衆人輪番傳遞生命寶玉來吸引玫拉的注意並一步靠近對岸能消滅她。於是, 衆人輪番傳遞生命寶玉來吸引玫拉的注意並一步靠近對岸他們能成功嗎?
【問題描述】
簡化後的問題:現在,莉雅閃耀 簡化後的問題:現在,莉雅閃耀 簡化後的問題:現在,莉雅閃耀 了一下主角光環,現在他們可以防禦玫拉的 了一下主角光環,現在他們可以防禦玫拉的 一切物理攻擊。幾個人分別站在座橋的同端,每回合後向前最多進 一切物理攻擊。幾個人分別站在座橋的同端,每回合後向前最多進 一切物理攻擊。幾個人分別站在座橋的同端,每回合後向前最多進 Vi各 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 單位長度,當然也可以不走(保護隊友)。在行動環節結束後拿着生命寶玉的 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 人可以選擇將寶玉傳給其他,前提是們之間的後距離不能超過 max_dis。 傳遞環節結束後,玫拉會攻擊雖然發現自己的物理傷害失效但她並不氣 傳遞環節結束後,玫拉會攻擊雖然發現自己的物理傷害失效但她並不氣 傳遞環節結束後,玫拉會攻擊雖然發現自己的物理傷害失效但她並不氣 傳遞環節結束後,玫拉會攻擊雖然發現自己的物理傷害失效但她並不氣 餒,她會向拿着寶玉的人所在橋進行法術攻擊並造成 餒,她會向拿着寶玉的人所在橋進行法術攻擊並造成 餒,她會向拿着寶玉的人所在橋進行法術攻擊並造成 attack點傷害。每座橋 點傷害。每座橋 點傷害。每座橋 都有一個生命值 HPi,當生命值降到 ,當生命值降到 0及以下時,上面的人和生命寶玉就會墜入 及以下時,上面的人和生命寶玉就會墜入 深淵,顯然我們不希望這樣的情況發生。每 深淵,顯然我們不希望這樣的情況發生。每 深淵,顯然我們不希望這樣的情況發生。每 座橋的長度 len相同。請你幫他們求 相同。請你幫他們求 出他們將生命寶玉送至對岸所需的最短回合數;如果不行,輸“ comeback”。
【輸入格式】
從文件 elventhrone.in中輸入 數據。
第 1行:四個整數 n,len,max_dis,attack。
第 2~n+1行:一個字符串 NAMEi和一個整數 Vi,Vi代表名叫 NAMEi的人 的速度。
第 n+2~2n+1行:一個字符串 行:一個字符串 行:一個字符串 NAMEi和一個整數 HPi,HPi代表名叫 代表名叫 NAMEi的人所在橋生命值。
【輸出格式】
輸出到 文件 elventhrone.out中。
NOIP2016 模擬考試——實驗中學 第一試 精靈王座:最後之戰
第 9 頁 共 10 頁
·若有必勝策略,輸出一個整數表示通過的最小回合。
·若無必勝策略,輸出“ comeback”。
【樣例輸入】
7 100 10 5
Leah 9
dogs 9
Lambert 13
Cale 12
Barna 8
Captain 5
Naierwen 6
Leah 6
Lambert 12
dogs 6
Cale 13
Barna 6
Naierwen 3
Captain 19
【樣例輸出】
8
【樣例說明】
第一回合: 第一回合: Naierwen(玫爾)傳給 (玫爾)傳給 (玫爾)傳給 Captain(精靈隊長),回合末寶玉位置: (精靈隊長),回合末寶玉位置: (精靈隊長),回合末寶玉位置: (精靈隊長),回合末寶玉位置: (精靈隊長),回合末寶玉位置: (精靈隊長),回合末寶玉位置: 2。
第二回合: Captain(精靈隊長)傳給 Leah(莉雅),回合末寶玉位置: (莉雅),回合末寶玉位置: (莉雅),回合末寶玉位置: 5。
第三回合: Leah(莉雅)傳給 (莉雅)傳給 dogs(小劍盾),回合末寶玉位置: (小劍盾),回合末寶玉位置: (小劍盾),回合末寶玉位置: 21。
第四回合: dogs(小劍盾)傳給 (小劍盾)傳給 Cale(凱爾),回合末寶玉位置: (凱爾),回合末寶玉位置: 40。
第六回合: Cale(凱爾)傳給 Lambet(小魚),回合末寶玉位置: (小魚),回合末寶玉位置: 74。
第八回合: Lambet(小魚)帶“球”衝過終點線。 (小魚)帶“球”衝過終點線。
我可是儘量按照電影順序的 ^_^,就最後差了點 O_O。
【樣例輸入】
7 1000 100 5
Leah 9
NOIP2016 模擬考試——實驗中學 第一試 精靈王座:最後之戰
第 10 頁 共 10 頁
dogs 9
Lambert 13
Cale 12
Barna 8
Captain 5
Naierwen 6
Leah 6
Lambert 12
dogs 6
Cale 13
Barna 6
Naierwen 3
Captain 19
【樣例輸出】
comeback
【樣例說明】
這真是一個悲劇,但在我們的幫助下他機智退了回來都毫髮無傷。 這真是一個悲劇,但在我們的幫助下他機智退了回來都毫髮無傷。 這真是一個悲劇,但在我們的幫助下他機智退了回來都毫髮無傷。 這真是一個悲劇,但在我們的幫助下他機智退了回來都毫髮無傷。 相信他們會以別的方式脫險。
【數據規模與約定】
對於 30%的數據 n ≤ 10,len ≤ 1000;
對於 100%的數據 n ≤ 200000,0 ≤ attack, V ≤ 1000,0 < HP ≤ 1000, 0 < =len, max_dis < 109。
在跑酷開始時,寶玉可以任何人手中。
在回合的任意時刻,生命寶玉到達了對岸都算這個成功。
數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 數據保證名字沒有重複,只包括英文母(大寫或小),長度不超過 10。

提示:注意 特判。


這道題一看標算就非常麻煩。那麼怎麼辦呢。看提示!特判。在瘋狂的特判了一坨comeback之後我又去看了看樣例,發現似乎找到最大的vi然後除一下len好像就很接近答案了,因爲當數據隨機的時候回合數這個東西有很大的容錯率。可能你的方案不是最優也是可以對的。而max_dis這個東西可以縮短路徑。。。找最大的vi來除也會縮短回合,那麼我們隊max_dis置之不理然後用最大的vi來似乎也會更加接近答案。(一本正經胡說八道),然後就這麼騙到90分的時候我已經笑到抽風。

#include <cstdio> 
#include <cmath> 
#include <ctime> 
#include <string> 
#include <cstring> 
#include <cstdlib> 
#include <iostream> 
#include <algorithm> 
   
#include <set>
#include <stack> 
#include <queue> 
#include <vector> 
#include <map>
 
#define pb push_back
#define lb lower_bound
#define sqr(x) (x)*(x)
#define lowbit(x) (x)&(-x) 
#define Abs(x) ((x) > 0 ? (x) : (-(x))) 
#define FOR(i,a,b) for((i)=(a);(i)<=(b);(i)++) 
#define FORP(i,a,b) for(int i=(a);i<=(b);i++) 
#define FORM(i,a,b) for(int i=(a);i>=(b);i--) 
#define ls(a,b) (((a)+(b)) << 1) 
#define rs(a,b) (((a)+(b)) >> 1) 
#define getlc(a) ch[(a)][0] 
#define getrc(a) ch[(a)][1] 
   
#define maxn 1000005
#define maxm 100005
#define INF 1070000000 
using namespace std; 
typedef long long ll; 
typedef unsigned long long ull; 
   
template<class T> inline 
void read(T& num){ 
    num = 0; bool f = true;char ch = getchar(); 
    while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();} 
    while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();} 
    num = f ? num: -num; 
}
int out[100];
template<class T> inline
void write(T x,char ch){
    if (x==0) {putchar('0'); putchar(ch); return;}
    if (x<0) {putchar('-'); x=-x;}
    int num=0;
    while (x){ out[num++]=(x%10); x=x/10;}
    FORM(i,num-1,0) putchar(out[i]+'0'); putchar(ch);
}
/*==================split line==================*/
int n,len,attack,Max_dis;
char s[maxn];
int use=0;
int main()
{
    read(n); read(len); read(Max_dis); read(attack);
    int Max_v = 0,sum_hp = 0;
    FORP(i, 1, n) {int x; scanf("%s",s); read(x); Max_v = max(Max_v, x);  }
    FORP(i, 1, n) {int x; scanf("%s",s); read(x); sum_hp = sum_hp + x; if (attack != 0) use = use + x / attack; }
    if (Max_v == 0) {printf("comeback");return 0;}
    if (attack == 0) {write(len/Max_v + ((len%Max_v) != 0),'\n'); return 0;}
    if(len / Max_v > sum_hp / attack)  {printf("comeback"); return 0;}
    if(use < len / Max_v) {printf("comeback");return 0;}
    write(len/Max_v + ((len % Max_v) != 0),'\n');
    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章