區間or值(移位)

2021-07-15 03:02:05 字數 600 閱讀 4548

題意:t組案例,每次給定n個數(不超過1e9),一共m次詢問(1<=n,m<=1e5),每次詢問給乙個區間[a,b]  求解區間or值

思路:先記錄第i個數的2進製表示  two[i][j] =(num>>j)&1;

再將前i個數的2進製每位加起來 sum[i][j]=sum[i-1][j]+two[i][j];

最後求給定區間的or值    if(sum[b][j]-sum[a-1][j]>0)   ans = ans| (1<

**:#include

#include

#include

#include

using namespace std;

#define max 100100

int sum[max][33],two[max][33];

int main()

for(int i=0;i<31 ;i++) sum[0][i]=0;

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

int a,b;

while(m--)

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

return 0;

}

藍橋杯 區間移位

數軸上有n個閉區間 d1,dn。其中區間di用一對整數 ai,bi 來描述,滿足ai bi。已知這些區間的長度之和至少有10000。所以,通過適當的移動這些區間,你總可以使得他們的 並 覆蓋 0,10000 也就是說 0,10000 這個區間內的每乙個點都落於至少乙個區間內。你希望找乙個移動方法,使...

歷屆試題 區間移位

問題描述 數軸上有n個閉區間d1,dn。其中區間di用一對整數 ai,bi 來描述,滿足ai bi。已知這些區間的長度之和至少有10000。所以,通過適當的移動這些區間,你總可以使得他們的 並 覆蓋 0,10000 也就是說 0,10000 這個區間內的每乙個點都落於至少乙個區間內。你希望找乙個移動...

試題 歷屆試題 區間移位

1.把所有的區間左右端點讀入,並且端點都乘以2,也就是擴大兩倍,因為後面要二分答案,但是答案又會有0.5的小數字,二分的答案就會是擴大兩倍就會是整數,以便更好二分,只要最後答案 2就可以了 2.區間按右端點排序 3.開始二分答案,記最大移動距離為mid,記當前沒有被覆蓋的區間點 k 0,列舉所有的區...