51NOD 1674 區間的價值 V2

2021-07-24 06:52:15 字數 1094 閱讀 2090

原題鏈結

1674 區間的價值 v2

基準時間限制:1 秒 空間限制:131072 kb 分值: 40 

難度:4級演算法題

lyk擁有乙個區間。

它規定乙個區間的價值為這個區間中所有數and起來的值與這個區間所有數or起來的值的乘積。

例如3個數2,3,6。它們and起來的值為2,or起來的值為7,這個區間對答案的貢獻為2*7=14。

現在lyk有乙個n個數的序列,它想知道所有n*(n+1)/2個區間的貢獻的和對1000000007取模後的結果是多少。

例如當這個序列為時,那麼區間[1,1],[1,2],[1,3],[2,2],[2,3],[3,3]的貢獻分別為9,0,0,16,20,25。

input

第一行乙個數n(1<=n<=100000)。

接下來一行n個數ai,表示這n個數(0<=ai<=10^9)。

output

一行表示答案。
input示例

3

3 4 5

output示例

70
求出每一位的連續區間l, r,滿足在這個區間上的數的該位都是1,在求出l, r區間上所有子區間的or值之和,再相乘

#include #define maxn 100005

#define mod 1000000007

using namespace std;

typedef long long ll;

int vis[35];

int num[maxn];

int get_int()

return n;

}int main()

}if(l > n)

break;

for(r = l; r <= n; r++)

}r--;

memset(vis, 0, sizeof(vis));

for(int h = l; h <= r; h++){

for(int j = 0; j < 31; j++){

if(num[h]&(1<

51nod 1712 區間求和

解法 這個題首先考慮乙個簡單情況 對於區間 x,y 權值為多少。容易寫出公式 f x y s y s x 1 sum y sum x 1 x 1 sum x 1 y x 1 其中s x 表示 從第乙個元素到第x個元素的 所有有序二元組的和 題目中定義的 sum表示字首和 這裡要求的是所有a x a ...

51Nod1962 區間計數

兩個數列 請求出ans,ans定義如下 ans ni 1 nj i max max 注 內表示式為真,則為1,否則為0.1 n 3.5 1051 ai,bi n 樣例解釋 7個區間分別為 1,4 1,5 2,4 2,5 3,3 3,5 4,5 input 第一行乙個整數n 第二行n個整數ai 第三行...

51Nod1962 區間計數

這題與之前那道區間最值的題非常類似,依舊是二分區間,然後統計跨過中間點的區間貢獻。我們要選出小於等於和小於的,這樣就可以算出相等的區間長了。複雜度o nlogn by 大奕哥 1 include2 using namespace std 3 typedef long long ll 4 ll ans...