Codeforces 976E 題解報告

2021-08-19 17:08:06 字數 939 閱讀 6461

(1)當把所有的倍數2 ^ a都加到同一health上,health增加的最多

(2)先計算每乙個creature的hp - dmg,按該值對所有的creature排序

再求和,i

#include 

using

namespace

std;

const

int n = 200 * 1000 + 9;

int hp[n], dmg[n];

// 按生命值和破壞值的差排序,差大的排在前

// 若差相等,按原先的順序即從小到大

bool cmp(int i, int j)

return i < j;

}// 得到生命值和破壞值中的較大者

int getmaxdesc(int id)

int main()

b = min(b, n);

vector

creature(n);

for(int i = 0; i < n; ++i)

// 按creature的生命值和破壞值的差進行排序

sort(creature.begin(), creature.end(), cmp);

long

long res = 0, sum = 0;

for(int i = 0; i < n; ++i)

else

}res = sum;

if(b == 0)

// 所有的a加給同一creature時翻倍最多,倍數為2的a次冪

long

long mutiple = (1ll << a);

for(int i = 0; i < n; ++i)

else

}printf("%i64d\n", res);

return

0;}

Codeforces 976C 題解報告

對資料進行排序 1 按左邊的數從小到大排 2 若左邊的數相等,則按右邊的數從大到小排。排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。比如2 13 2 12 1 11排序之後,變為 1 11 2 13 2 12因為12 13,則有 2,12 被包含在它的上乙個數 2,...

codeforces 1030E 暴力 思維)

題目 題意 給定一些數,可將區間 l r 中某些數的二進位制位的1的位置更換,使得最終區間所有數異或和為0,求這樣的區間個數。思路 在那裡瞎dp了好久,wa的很徹底,借鑑了一下別人的思路。區間合法的條件是 這個區間1的個數為偶數,並且區間中二進位制位1最多的乙個數的二進位制個數小於等於和的一半。我們...

Codeforces 1270E 構造 數學

有 n 個二維平面上的點,每兩個點之間連一條線段,將這些點劃分為兩個非空的集合 a b 同乙個集合內的兩點之間線段用黃色標註,不同集合的兩點之間線段用藍色標註,使距離相同的線段顏色相同。先將所有點的座標以其中乙個點作為原點轉化一下,使其中必定有乙個點是 0,0 然後將所有點按奇偶分為四組 0代表偶數...