Jzoj P5937 斬殺計畫

2021-08-30 19:14:08 字數 1484 閱讀 1575

小g

gg有n

nn個人,第i

ii個人有a

ia_i

ai​點攻擊力,小k

kk有m

mm點血量。

你可以進行以下3

33種操作:

①復用型藥水:花費1

11法力值,小g在n

nn個人裡選擇乙個攻擊力≤2≤2

≤2的人②獵人藥水:花費4

44法力值,小g在n

nn個人裡選擇乙個攻擊力≤3≤3

≤3的人③腐敗藥水:花費1

11法力值,使所有攻擊力≥3≥3

≥3的人的攻擊力都降低333點

要使得最後小g

gg選擇的人能一擊秒了小k

kk,(sum

≥m

sum≥m

sum≥

m)且使得自己使用的腐敗藥水最少,

並在腐敗藥水使用最少的情況下法力值花費最小,

問最少的腐敗藥水花費跟法力值花費分別是多少。

n

≤5000000,最

大攻擊力

≤30000

n≤5000000,最大攻擊力≤30000

n≤5000

000,

最大攻擊

力≤30

0000≤m

≤5000000

0≤m≤5000000

0≤m≤50

0000

0用桶排記錄小弟初始攻擊力每種分別有多少個,

列舉使用腐敗藥水的次數,將能拉過來的人都拉過來,

直到總攻擊力大於等於m

mm時退出,因為腐敗藥水要花得最少,所以能到m

mm就不能花了

然後如果>m>m

>m就貪心的刪去多拉的人,優先刪去3(花費4法力顯然不值),

然後刪去 1(相比較而言肯定優於刪去 2),最後刪去 2。

#include #include #include #include #include #include #define n 30005

using namespace std;

int num[n][3], n, m, x;

void read(int &x)

while (s >= '0' && s <= '9')

x = x * f;

}int main()

if (m == 0)

for (int i = 1; i <= maxnum; i++)

while (num[i][0])

while (num[i][1])

if (i % 3 == 0) printf("%d %d\n", i / 3 - 1, rp + i / 3 - 1); else printf("%d %d\n", i / 3, rp + i / 3);

return 0;

} }printf("-1\n");

return 0;

}

LC 593 驗證正方形

問題 給出4個點,判斷這四個點能否構成乙個正方形 思路 乙個正方形意味著4條邊相等,四個角都為直角。我就簡單地先計算p1到p2,p3,p4的三個向量,然後判斷向量v2,v3,v4之間,有哪兩個向量是垂直的 點積等於0 找出2個垂直向量之後 例如v2,v3 就判斷這兩個向量的長度是否相等,而且這兩個向...

jzoj P1330 迎接儀式

給出乙個不和諧的佇列,用 j 替代 教 z 替代 主 而乙個 j 與 z 組成的序列則可以描述當前的佇列。為了讓教主看得盡量舒服,你必須調整佇列,使得 jz 子串盡量多。每次調整你可以交換任意位置上的兩個人,也就是序列中任意位置上的兩個字母。而因為教主馬上就來了,時間僅夠最多作k次調整 當然可以調整...

jzoj P1331 超級教主

lhx教主很能跳,跳需要消耗能量,每跳1公尺就會消耗1點能量。教主為了收集能量,來到了乙個神秘的地方,教主的正上方每100公尺處就有乙個能量球 也就是這些能量球位於海拔100,200,300 公尺處 每個能量球所能提供的能量是不同的,一共有n個能量球 也就是最後乙個能量球在n 100公尺處 教主為了...