解:先分解質因數。考慮按照質因數大小是否大於√分類。
大於的就是乙個數顏色個數,莫隊即可n√m。
小於的直接列舉質因數做字首和然後o(1)查詢。總時間複雜度n(√m + σ(√v))。
發現我們t飛了,發現莫隊的複雜度較優,而處理小於√v的質因數較劣。我們平衡一下。
把界調整到1000。這樣比lm大的至多兩個,莫隊常數*2。而後半部分的複雜度就變成了nσ(3√v),可以通過本題。
1 #include 2ac**3const
int n = 100010, mo = 19260817;4
5 inline char
gc()
1011 template inline void read(t &x)
17while(c >= '
0' && c <= '9'
) 21
return;22
}2324int ex[n], p[n], a[n], lc[n], rc[n], fr[n], top, x[n * 2
], xx, inv[n], bin[n], ans, ans[n], sum[n], exx[n];
25bool
vis[n];
26 std::vectorv[n], v2[n];
2728
struct
node
34}node[n];
3536 inline void getp(int
n) 43}44
return;45
}4647 inline void add(int
y) 53 ++bin[x];
54 ans = 1ll * ans * (bin[x] + 1) %mo;55}
56if
(exx[y])
61 ++bin[x];
62 ans = 1ll * ans * (bin[x] + 1) %mo;63}
64return;65
}6667 inline void del(int
y) 75}76
if(exx[y]) 83}
84return;85
}8687 inline void solve(int
x) 95}96
if(x > 1) printf("
%d "
, x);
97 puts(""
);98
return;99
}100
101int
main()
119if
(cnt)
123}
124if(x == 1) continue
;125
for(; j <= top; j++)
132}
133if(x > 1
) 137
}138
139 std::sort(x + 1, x + xx + 1
);140 xx = std::unique(x + 1, x + xx + 1) - x - 1
;141
for(register int i(1); i <= n; ++i)
146if
(exx[i])
149}
150151
for(register int i(1); i <= m; ++i)
156 inv[0] = inv[1] = 1
;157
for(register int i(2); i <= n + 1; ++i)
160161
for(register int i(1); i <= fr[n]; ++i)
166167 std::sort(node + 1, node + m + 1
);168
169 ans = 1
;170 add(1
);171
int l = 1, r = 1
;172
for(register int i = 1; i <= m; i++)
176while(node[i].l
179while(node[i].r
182while(l
185 ans[node[i].id] =ans;
186//
printf("ans %d = %d \n", node[i].id, ans);
187}
188189
///step 2
190191
for(register int i(1); p[i] <= lm; ++i)
198}
199for(register int j(1); j <= m; ++j)
203}
204205
for(register int i(1); i <= m; ++i)
208209
return0;
210 }
P5071 Ynoi2015 此時此刻的光輝
傳送門 lxl大毒瘤 首先乙個數的因子個數就是這個數的每個質因子的次數 1的積,然後考慮把每個數分解質因子,用莫隊維護,然後我交上去就0分了 如果是上面那樣的話,我們每一次移動指標的時間複雜度是o 這個數的質因子個數 再加上我人傻常數大,t很正常 於是按照memset0的說法,可以預處理質因子的字首...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...
洛谷練習P2279 P1346
2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...