拒絕聽搜尋.etc水過的。資料太弱了(儘管考場上我憑藉資料太水騙了好多分)
我講的思路和下發的題解一樣。(因為我不會所以只能頹它啊)
首先你要相信這題精靈就100個,真的只有100個,這次資料範圍沒錯。
然後你的複雜度就可以愉快地用m了。
因為小精靈就m個所以實際上有用的位置也最多只有m+1個(算起點)
可以證明:如果路徑中存在折返,那麼一定發生在某乙個小精靈的位置上。
因為如果你在其它位置折返,那一定不如在上乙個經過的小精靈處就折返,這樣才能更早到達對面的位置
也可以證明:如果過程中走過的座標最小是l最大是r,那麼接下來要麼就是直線前往l左面的第一只小精靈,要麼就是直線前往r右面的第一只小精靈。
因為l到r區間內的精靈都被你以前路過時抓走了,如果你想要更多的分數就需要擴充套件你的活動區間。
而從(l,r)->(l,r+2)可以分解成(l,r)->(l,r+1)->(l,r+2)來逐步考慮,所以現在的問題就是dp統計一次往兩邊擴充套件1個位置。
dp定義已經出來了,tl[i][j][k]表示已經走過區間j~k,目前時間為i的最大分數,此時在左端點。tr[i][j][k]同理只不過在右端點。
然而陣列開不開,需要離散化一下有小精靈的座標。
由本層向下一層轉移就好。
理論複雜度爆踩搜尋,實際執行時間被爆踩。
1 #include2 #include3 #include4 #include5碼量有點大using
namespace
std;
6struct qs
25for(int i=1;i<=o;++i)for(int j=i;j<=o;++j)ans=max(ans,max(tl[2000][i][j],tr[2000
][i][j]));
26 printf("
%d\n
",ans);
27 }
jzoj 5770 可愛精靈寶貝
是區間dp 好像dfs加神秘玄學剪枝也能過?首先,我們可以發現這個人走過的位置是乙個區域,而且區域內部的精靈要麼被抓,要麼消失了 總之就是與以後的轉移沒有關係 所以,狀態定義 f l r t 當這個人走過區間 l,r 且目前在l處,時間為t時的最大分值 注意,l,r的左右位置要根據大小自己判斷 然後...
dp Jzoj P5770 可愛精靈寶貝
description branimirko是乙個對可愛精靈寶貝十分痴迷的玩家。最近,他閒得沒事組織了一場捉精靈的遊戲。遊戲在一條街道上舉行,街道上一側有一排房子,從左到右房子標號由1到n。剛開始玩家在k號房子前。有m個精靈,第i只精靈在第a i 棟房子前,分值是b i 以及它在t i 秒內 含 存...
亂談精靈寶可夢Go(Pokemon Go)
精靈寶可夢go中有四個很有意思的元素,我們可以一一來看。無敵ip口袋妖怪,價值405億美金 大家可能都看過 神奇寶貝 都知道萌萌的皮卡丘,神奇寶貝 動畫片實際上是改編自 口袋妖怪 掌機遊戲。口袋妖怪 系列先後推出過數十款遊戲,累計收入超過405億美金,實體卡牌銷量突破210億張。對於80後 90後的...