輸入
2 2
1 2
輸出0
輸入10 10
1 3 5 5 2 5 9 3 1 10
輸出60
分析公式,公式分為三種情況,當 \(x=a_i\) 時,結果為 \(2\),其它兩種情況結果加法等式中必有乙個為 \(0\)。
當 \(x≤a_i\) 時,列舉每乙個 \(a_i/x\) 結果,將整個區間進行數相加,並乘以 \(a_i/x\) 結果。
當 \(x≥a_i\) 時,列舉每乙個 \(a_i\),並分析它的倍數,在整個區間進行差分,最後求字首和。
注意
#include #include using namespace std;
typedef long long ll;
const int maxn = 2e6+55;
ll a[maxn];
ll x[maxn],ans=0;
inline int min(int a,int b)
int main()
for(int i=1;i<=m;++i)
}for(int i=1;i<=m;++i)a[i]+=a[i-1],x[i]+=x[i-1];
for(int i=1;i<=m;++i)
ans^=x[i];
}printf("%lld\n",ans);
return 0;
}
牛客練習賽58 F
求帶單點修改的樹上兩點間任意子路徑長異或和。路徑長等於路徑上所有異或和。簡單模擬一下,可以發現。奇數情況下,答案是偶數點異或和。偶數情況下,就是正常的異或和。偶數點異或和也很容易處理。分深度奇偶樹狀陣列即可。但是這是對於鏈的,不能直接dfs dfsdf s序,需要剖分一下。但是我不會,所以去學了一下...
牛客練習賽13 F 皇后
在乙個n n的西洋棋棋盤上有m個皇后。乙個皇后可以攻擊其他八個方向的皇后 上 下 左 右 左上 右上 左下 右下 對於某個皇后,如果某乙個方向上有其他皇后,那麼這個方向對她就是不安全的。對於每個皇后,我們都能知道她在幾個方向上是不安全的。現在我們想要求出t0,t1,t8,其中ti表示恰有i個方向是 ...
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...