山東省第六屆省賽K題

2021-07-02 14:15:52 字數 907 閱讀 5159

題意描述:

題目原型來自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...