SDOI2014 數表 解題報告

2021-07-10 17:20:36 字數 1234 閱讀 1910

這題並沒有做出來。。 設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 結點的位址...