description
給定nn
n個數字a1,
a2,.
..,a
na_1, a_2, ..., a_n
a1,a2
,..
.,an
。定義f (l
,r)=
al∣a
l+1∣
...∣
ar
f(l, r) = a_l | a_| ... | a_r
f(l,r)
=al
∣al+
1∣.
..∣a
r。現在列舉(1≤
l≤r≤
n)
(1 \le l \le r \le n)
(1≤l≤r
≤n),問不同的f
ff值一共有多少個。
input
第一行乙個整數n
nn表示陣列大小
第二行n
nn個整數a
ia_i
ai(1≤
n≤10
5,1≤
ai≤1
06
)(1\le n\le 10^5,1\le a_i\le 10^6)
(1≤n≤1
05,1
≤ai
≤106
) output
輸出乙個整數表示不同的f
ff值一共有多少個。
sample input3
1 2 0
sample output
solutiona
ia_i
ai二進位制表示至多20
2020
位,以i
ii為左端點產生的f
ff值不超過20
2020
種(每次至少有一位之前為0
00現在為1
11才會改變f
ff值),故對每一位可以維護該位為1
11的位置序列,每次找到i
ii後面(包括i
ii)的這20
2020
位出現的最早位置,根據出現位置從小到大依次加入新的位即得到不同的f
ff值,開乙個標記陣列記錄出現的值即可,時間複雜度o(20
n)
o(20n)
o(20n)
code
#include#include#includeusing namespace std;
typedef pairp;
const int maxn=1<<20;
int n,f[maxn],p[20];
p a[20];
vectorv[20];
void solve()
for(int i=1;i<=n;i++)
int ans=0;
for(int i=0;iprintf("%d\n",ans);
return 0;
}
替換空格 newcoder
題目描述 newcoder 題目鏈結 以下為 2019.6.5 更新 class solution int blankcount 0 int oldstrlen strlen str for int i 0 i oldstrlen i 我們統計到了原字串中所有的空格,那麼替換之後字串的長度應該為 我...
newcoder猴子吃香蕉
有n只猴子,第i只猴子每過xi小時會連續吃香蕉yi小時。猴子從第二次開始每次休息結束後這只猴子連續吃香蕉的時間會增加zi小時。給定 n只猴子,每乙隻的 xi,yi,zi,以及時間 t,求在前 t小時中,所有猴子共吃了多少小時。對於乙隻猴子來說是這樣的 從第1小時開始 休息xi小時 1 x i 吃yi...
newcoder前端開發規範
前端開發規範 1 變數命名規範 1.1變數命名使用駝峰規則,首字母為變數的型別。s 字串 string 變數,比如shtml o 物件 object 比如obody a 陣列 array 變數。比如 apart n 數字 number 變數 包括所有整數 浮點數 nage 14 npi 3.14 f...