題意: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,列舉所有的區...