原題鏈結
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)。output接下來一行n個數ai,表示這n個數(0<=ai<=10^9)。
一行表示答案。input示例
3output示例3 4 5
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...