LGR 054 洛谷10月月賽II

2022-05-13 09:31:01 字數 1391 閱讀 5544

結論popcnt(x^y)popcnt(x)+popcnt(y)的奇偶性相同。

然後就是popcnt為奇數的乘為偶數的。預處理一下\(2^\)次方以內的popcnt,直接\(o(1)\)算就行。

就是求有多少個等差子串行。

方程很好寫,\(f[i]\)表示以\(i\)結尾的等差子串行個數,\(f[i] = \sum_^i f[j]*[a[i]-a[j]=d]\),列舉一下公差就行了。這裡要注意公差可能有正有負,不要一起列舉(我就在這錯的)

#include #include #include typedef long long ll;

const int n = 1010;

const ll ha = 998244353;

const int m = 40010;

ll s[m], f[n], a[n], n, ans, mx;

void calc(ll d)

}int main()

ans = ans - mx * 2 * n % ha + ha;

ans %= ha;

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

return 0;

}

衝突就是乙個子集關係。而子集關係又是偏序的。「偏序集最小反鏈覆蓋等於最長鏈」。所以建乙個子集關係的dag跑乙個最長路就行了。然後就是有乙個虛點的技巧,每個集合只與比它少乙個元素的集合連邊,這樣點數是\(o(2^k)\)的,邊數是\(o(k2^k)\)的。跑最長路的時候真點是\(1\)虛點是\(0\)就行了。

#include #include const int n = (1 << 21);

const int m = n * 21;

int hd[n], to[m], nxt[m], w[n], cnt;

int f[n], rd[n], rn[n], tot[n];

int n, k, a[n];

inline void adde(int x, int y)

int main()

for (int i = (1 << k) - 1; i >= 0; --i)

}int ans = 0;

for (int i = (1 << k) - 1; i >= 0; --i)

ans = std::max(ans, f[i]);

}puts("1");

printf("%d\n", ans);

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

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

return 0;

}

咕。

LGR 054 洛谷10月月賽II

luogu 成功咕掉codeforces round 517的後果就是,我 mbox 依舊沒有寫出來。mbox mbox 為 0 的乘上 mbox 為 1 的就是答案。因為兩個數異或以後二進位制位 1 的個數的奇偶性不會變。至於計算 mbox 預處理到根號,o 1 計算即可。include incl...

洛谷10月月賽II

這道題考了矩陣旋轉 其實很考驗推公式的能力和 能力 這裡有個小技巧 可以設 x,y 為原點,然後去推公式,然後實際操作中橫座標加上x,縱座標加上y就好了。順時針 i,j j,i 逆時針 i,j j,i include define rep i,a,b for register int i a i b...

LGR 052 洛谷9月月賽II(加賽)

題解 沒打。ab題滿世界都過了應該沒什麼意思 c題是個比較有意思的思維題 先看了題解才會的。我們考慮這麼一件事情 沒鑰匙的人出門後 門一定是開著的 他進來的時候,門一定是開著的 其他時候,一定門能關著比較好 但是這個東西並不是很好維護,因為可能重複算 我們考慮重新排個序 我們把a在b前面的那個排在他...