題目大意:
有乙個殺手,他一開始有一把槍,每次開槍只能造成一點傷害,他需要消滅n個敵人,每個敵人有各自的health[i], 並且有**,消滅敵人就可以獲得他的**用來消滅其他敵人;
題目解析:
n特別小,並且序列不需要有順序,很明顯是狀態dp,dp[i]表示消滅序列i時所需要最少的開槍次數,然後dp的時候列舉沒有消滅的敵人,選擇消滅過的敵人們的**與自己的作比較,這樣肯定是最優解,然後dp就可以轉移了;
ac**:
#include#include#include#include#include#define inf 0x3ffffff
using namespace std;
int dp[(1<<15)+10],health[20],gun[20][20];
int main()
{ int cas,cnt=1,i,j,k,len,n,ma;
string s;
scanf("%d",&cas);
while(cas--)
{ cin>>n;
for(i=0;i>s;
for(j=0;j
LightOj 1188 樹狀陣列
題意 給乙個數列 len 1e5 數列裡的數 num 1e5 現有q次詢問 1e5 詢問某個區間的不同的數有多少個。思路 明顯的樹狀陣列統計,自己寫的時候不太清楚那個樹狀陣列到底應該怎麼維護。有點想用掃瞄線類似的思想,然後離線所有詢問這樣去維護,甚至想到了按照右區間排序。但是到底樹狀陣列應該怎樣維護...
題解 LightOJ1067 逆元
題目鏈結 費小馬定理求逆元 a b 1mod m 只要 m 是乙個素數,而且 b 不是 m 的倍數,就可以用乙個逆元整數 b 通過 a b a b mod m 來以乘換除 費馬小定理說,對於素數 m 任意不是 m 的倍數的 b,都有 b m 1 1 mod m 於是可以拆成 b b m 2 1 mo...
LightOJ 1176題目解答
lightoj 1176題目解答 一共有6種碼號的衣服,每個人可以接受2種中的任意乙個,每個衣服有n種顏色 本題與顏色無關,其實告訴你有n種顏色就是告訴你每個尺碼有n件衣服 一共有m個人,問這m個人能否都拿到適合自己的衣服。可用最大流求解,人為左邊的點,衣服為右邊的點,每個人與適合自己的衣服之間建邊...