codeforces 1030E 暴力 思維)

2021-08-28 15:25:23 字數 918 閱讀 1629

題目**

題意:

給定一些數,可將區間 l ~r 中某些數的二進位制位的1的位置更換, 使得最終區間所有數異或和為0,求這樣的區間個數。

思路

在那裡瞎dp了好久,wa的很徹底,借鑑了一下別人的思路。

區間合法的條件是:

這個區間1的個數為偶數,並且區間中二進位制位1最多的乙個數的二進位制個數小於等於和的一半。

我們發現乙個數至少可以增加乙個二進位制位,1e18,大約在2^61次方。那麼區間長度大於63時,一定可以把數字相互抵消成0,(即第二個條件一定滿足)。所以我們只需統計有多少個偶數區間即可。

對於區間長度小於63的,我們直接暴力列舉即可。

**如下:

#include #include #include #include #include #include #include #include using namespace std;

const int maxn = 3e5+100;

long long a[maxn];

long long get(long long n)

return num;

}long long numj[maxn];

long long numo[maxn];

long long all[maxn];

int main()

if(i>63)

numj[i] = numj[i-1] + (all[i]%2==1);

numo[i] = numo[i-1] + (all[i]%2==0);

}printf("%lld\n",ans);

return 0;

}

Codeforces 976E 題解報告

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...

Codeforces 1270E 構造 數學

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

codeforces 731E 優先佇列 DP

題意 給出n個數字,a和b兩個人依次選中1 k k 2 把他們合併之後自己分數加上這些數的和。求兩個人在最右策略下a最多領先b多少。當數字只剩下乙個之後遊戲馬上結束。用 dp i 0 1 表示前i個數字被合併,現在是a b先手到最後遊戲結束最多領先多少。故a要最大化後繼狀態的值,b要最小化後繼狀態的...