題意描述:
題目原型來自lol遊戲,乙個人和一座塔,共同打n個怪,每個怪都有一定的血量,塔和人都有無限血。每一**擊都是塔先打,而且塔只按順序打怪物,人後打,但人可以選擇任意乙個攻擊,但是人在每一輪可以攻擊也可以不攻擊。求人最多可以給幾個怪物以最後一擊。
1<=n<=1000, 塔,人的每次攻擊力x、y 在 0 - 1e9之間 ,怪的血量在 ai在 1 - 1e9之間。
解法描述:
定義 : 由於每一輪人可以攻擊可以不攻擊,那麼人可以保留這次攻擊,記為一次可用攻擊數。
定義 : d(i,j)為前i個怪 人殺死j個 所能剩餘的最大可用攻擊數。
定義:b(i) 為 為怪i 再被 塔打一下就死時的血量 , c(i) 為人把i滴血打完所需次數。
狀態轉移: 當 i-1 > = j 時 d(i,j)->d(i-1,j); 當且僅當 (d(i-1,j-1)+ (ai - b(i))%x ) >= c(b(i)) 時 d(i,j)->d(i-1,j-1);
#include #include #include #include #include using namespace std;
typedef long long ll;
const int inf = 1e9;
const int n = 1010;
ll d[n][n],x,y,a[n],n;
bool vis[n][n];
ll dp(int i,int j)
return d[i][j];
}int main()
memset(vis,0,sizeof(vis));
if(y==0 || x==0)
for(int i=n;i>=0;i--)}}
return 0;
}
sdut 3258 第六屆山東省ACM省賽H題
題意 乙個數可以表示為另乙個數的平方叫做square number,像3 3 9,9是乙個square number。給定n個數,求有多少對 ai,bi 滿足ai bi為乙個square number,其中i j。思路 除1之外的任何乙個整數都可分解為有限個質數的乘積,所以可以推得兩個數分解為質因數...
第六屆山東省省賽題解
給出n個人的身高和體重 要求按身高排序後 奇數序號的人一隊,偶數序號的人一隊 體重大的一隊獲勝 水題,考察點是結構體的排序 要注意的是變數的初始化以及資料型別的精度和輸入 struct node a 110 bool cmp node a,node b intmain sort a,a n,cmp ...
第六屆浙江省賽題解(部分)
題目鏈結 題目大意 有n個投標者,投標最高的獲得物品,需要支付第二投標者的 解題思路 使用結構體,儲存投標的 和一開始的排序.然後根據投標 排序,使用sort就可以了 ac include include include include using namespace std const int m...