這題並沒有做出來。。 設f
(i)=
∑d|i
d ,考慮按f(i)排序,則對於詢問(n
,m),
(n≤m
) ,f(i)會貢獻∑⌊
nd⌋d
=1μ(
d)⌊n
id⌋⌊
mid⌋
,這樣我們按照id考慮即可。。
但是我做的時候錯誤地把它化成了這樣: ∑⌊
nd⌋d
=1μ(
d)⌊⌊
ni⌋d
⌋⌊⌊m
i⌋d⌋
這樣就很難考慮出來該怎麼做了。。
**:
#include
#include
using namespace std;
#include
struct qs
int query(int
x)int mu[100005],prime[10005],smp[100005];
pair d[100005];
int main()
sort(q,q+q);
int j;
mu[1]=smp[1]=1;
d[1]=make_pair(1,1);
for(i=2;i<=n;++i)
for(j=1;j<=prime[0]&&i*prime[j]<=n;++j)
if(i%prime[j])
else
}//for(i=1;i<=10;++i)printf("%d:%d
%d\n",i,d[i],smp[i]);
sort(d+1,d+n+1);
int k,o=0;
q[q].a=0x7fffffff,d[n+1].first=0x7fffffff;
for(i=1;i<=n;)
for(;j<=n;++k,j+=d[i].second)
if(mu[k])
update(j,mu[k]*d[i].first);
//cout
<<"add:"
<","
for(;q[o].afor(j=1;j<=min(s,q[o].n);++j)
for(;j<=q[o].n;j=k+1)}}
for(i=q;i--;)printf("%d\n",ans[i]&0x7fffffff);
}
總結:一定要注意[[n/a]/b]=[n/ab]。 SDOI 2014 重建 題解
題目傳送門 題目大意 給出一張圖,過後每條邊有乙個存在的概率,問 後圖變樹的概率。又長見識了 還有個變元矩陣樹定理。對於圖的一棵生成樹,它的出現概率為 存在的邊的 p i p i p i 之積乘不存在的邊的 1 p i 1 p i 1 p i 之積。設圖為 g gg,生成樹為 t tt,那麼用柿子表...
SDOI2014 向量集(凸包 線段樹)
題目鏈結 兩個操作 1.在序列s中加入乙個向量 2.求某個向量和s的區間 l,r l,r l,r 中向量的點積最大值。n m 105 n,m le 10 5 n,m 10 5考慮兩個向量 a1 b1 a2 b2 a 1,b 1 a 2,b 2 a1 b 1 a2 b2 詢問向量為 x,y x,y x...
重排鍊錶 解題報告
給定乙個單鏈表 l 1 l 2 l n 1 l n 請編寫程式將鍊錶重新排列為 l n l 1 l n 1 l 2 例如 給定l為1 2 3 4 5 6,則輸出應該為6 1 5 2 4 3。每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址和結點總個數,即正整數n 10 5 結點的位址...