小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公尺處 教主為了...