今天是2018/7/15
然後又是我最不喜亂的測試,期末考試**仍在眼前。
題意小喵喵喜歡玩rpg遊戲。在這款遊戲中,玩家有兩個屬性,攻擊和防禦,現在小喵喵的攻擊和防禦都是1,接下來小喵喵會依次遇到n個事件。事件有兩種。
1.小喵喵經過修煉,角色公升級了,此時可以選擇攻擊+1或者防禦+1.
2.小喵喵遇到了乙個敵人,可以選擇戰鬥或者逃跑。如果戰鬥,勝利後得到a[i]金錢。如果逃跑,則無事發生,但是以後也不能再回來打這個怪物了。
對於一場戰鬥來說,如果小喵喵的攻擊力大於等於atk[i],防禦力大於等於def[i],那麼他可以無傷打敗這只怪物,從而他選擇打怪,否則他發現自己會受傷,從而選擇逃跑。
現在小喵喵想知道,通過巧妙地選擇公升級時加的屬性,他最多能夠從這n個事件中獲得多少金錢。
這是一道dp題,首先我們可以確定,同一時間內狀態叔很少,空間是可以的。
q:我們設f[i]表示攻擊力為i時的收益。為什麼不多加一維儲存防禦力呢?
a:技能點數是一定的,我們可以通過列舉攻擊力算出來防禦力,這也是為什麼同一時間內狀態數小的原因。
然後我們開始討論轉移。
當公升級時,一種狀態:攻擊力為i,防禦力為j
可以轉移為攻擊力i+1,防禦力j和攻擊力i,防禦力j+1的兩種狀態
寫出來就是f[i]=max(f[i],f[i-1]); i from tot(總技能點數) to 1 這裡是間接轉移了防禦力。
然後對於打怪,就是按照題意比較轉移就可以了
#include#include#includeusing std::max;
int read()
return res;
}long long f[2020];
int main()
else
}} for(int i=1;i這題還算簡單,屁嘞
題意小喵喵家附近有n個路口,m條道路連線著這些路口,而且通過這些道路各自需要一些時間c[i]。
小喵喵在1號路口,他要去n號路口上學,但是他馬上要遲到了,所以他想知道最短需要多長時間能夠到達學校。
其中忽略小喵喵由於出家門、到n號路口之後進入學校、從一條道路移動到另一條道路之類的時間,只計算他在這些道路上花費的時間總和。
分成圖,好不容易用對了一次樹狀陣列,結果longlng暴了我兩個麻痺戒指。
結果就只有50了
//修正後
#include#include#include#include#includeusing std::min;
using std::queue;
const int maxn=1010;
int dis[maxn][15],head[maxn],nxt[maxn];
bool inque[maxn][15];
int n,m,k;
int tail=0;
int read()
return res;
}struct node
;node line[21000];
void add(int x,int y,int z)
void updata(int pos,int now,int val)
return ;
}int check(int pos,int now)
return res;
}struct data
;void spfa()
}if(check(line[i].point,pas.k+1)>dis[pas.p][pas.k]&&pas.k我先看看去
題目描述
定義乙個數列的代價如下:
每次操作可以選擇乙個區間,和乙個2的冪次,使得這個區間的所有數字減去這個2的冪次。最少的使得這個數列全部減為0的操作次數即為這個數列的代價。注意在減的時候要求二進位制下這個區間的所有數字都要是1,即在二進位制下,這個減法不能退位。
例如:5 2 2中,不能進行[1,3]減去2的操作,因為(5)10=(101)2,在第二位不是1,所以不能減。
又如:7 5 3數列的代價為4,可以進行如下操作:[1,3]減1,[1,2]減4,[1,1]減2,[3,3]減2.
小喵喵有乙個長度為n的數列a[i]。他想知道a[i]的所有子串行(可以是不連續的)的代價之和。因為這個數字可能非常大,你只需要輸出ans%998244353的結果就可以了。
然而我自己並不會想出來,不過是真妙♂呀
首先考慮如果只有0和1是什麼情況。
此時乙個數列的代價就是數出連續1的段數。
考慮cnt[i][0/1]表示對於前i個數的子串行,最後一位是0/1的方案數有多少。
sum[i][0/1]表示對於前i個數的子串行,代價和是多少。
轉移方程:···if ( b[i] == 0 )
else
···
對於其他情況,我們只需要多開記錄在二進位製上的第幾位就可以了
測試 測試入門1
作為一位剛進入軟體測試行業的小白,這算是我自己的乙個測試行業的記錄吧。在剛剛畢業的這一年裡,從毫無目的的找工作到踏入軟體測試這個行業,我走過的路或許和別人沒有什麼不同,但還是想為自己的這一路留下點印記,也為想進入這個行業的小夥伴有乙個參考。說到如何進入軟體測試行業,最初是在大三的實習中,我的專業是電...
單元測試之新手最容易犯的錯誤
剛接觸單元測試時,就是使用的junit,說實話,對於新手來說,這個東西還是很直觀的,成功了就是一條非常好看的綠條,失敗了就是一條讓心滴血的紅條 有點誇張 但正是由於它的直觀,也會很容易迷惑人。一開始,在我心裡就留有這樣乙個印象,紅條出現,那肯定是有不對的地方 這無可厚非 綠條出現就一定成功了,那我就...
測試基礎 測試簡介(1)
什麼是測試?簡單的說,就是對被測物件進行檢測,目的在於檢測被測物件是否實現使用者的需求或者是搞清楚檢查的實際結果和預期結果之間的差別。我們對軟體進行測試,那我們對它進行測試的目的又是什麼?1 發現被測物件與使用者需求之間的差別 2 發現缺陷並解決,提高軟體質量 3 獲取被測物件的質量資訊,為決策提供...