——>點我跳轉<——
有兩個陣列,要你各選乙個數,使它們異或的值在二進位制中恰好有兩位是 1。
問你有多少種選法。
我們看到異或,考慮從位數處理。
看到只要兩位不同,我們可以考慮用這乙個方法(類似折半?)。
把兩邊每個數對於每一位取反得到的數互相匹配,看有多少個相同的且在兩邊的。
那直接匹配相同我們可以用雜湊表來實現。
那接著我們就會發現乙個問題,就是可以能兩個數取反的位置都是相同的,然後它們這樣相同了,那它不能算,而我們會算上。
那我們考慮容斥,把這種情況減去。
因為取反的是同一位,那再取反就說明等於沒取反,那我們就只用找兩邊有多少對相同的,把答案減去這個個數 ×
30\times 30
×30 即可。
要乘 30
3030
是因為每一位都可以這樣,就每對有三十次要減去。
然後就好了。
#include
#include
#define mo 1000007
#define ll long long
using
namespace std;
struct hash e[
3000007];
int le[
3000007
], kk;
ll n, m, a[
500001
], b[
500001];
ll ans;
void
hash_push
(int now)
e[++kk]
=(hash)
; le[pl]
= kk;
}ll hash_ask
(ll now)
intmain()
nowcoder 218398 小G的約數
點我跳轉 定義 f n 是 n 的約數的和,然後 g n 則是 1 f n 的和。然後問你 g g n 是多少。首先,我們會想到,暴力算是不行的。然後我們考慮優化算 g n g n g n 怎麼弄。我們先看約數有什麼特別的地方,那有約數,又有字首和,那如果對於乙個數 x xx,它會是哪些數的因子呢?...
nowcoder 90 L 用來作弊的藥水
題目描述 在乙個風雨交加的夜晚,來自異世界的不願透露姓名的tmk同學獲得了兩種超強藥水a b。根據說明書,tmk知道了這兩種藥水的作用 1 藥水a能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x p x的p次方 倍。2 藥水b能使人的能量值提高...
小L的占卜
小l的占卜 題目描述 小x的妹妹小l是一名 國的占卜師,她平日的工作就是為x國進行占卜。x國的占卜殿中有一條長度為 nnn 公尺的走廊,先人在走廊的每一公尺都放置了一座神龕,第 iii 座神龕能夠產生 aia iai 點靈力。相同型別的神龕產生的靈力是相同的,不同型別的神龕產生的靈力是不同的,也就是...