資料結構(set)

2022-09-01 05:15:09 字數 1439 閱讀 7025

【from new_dtoj 3974: 資料結構(set)】

題目描述

對乙個可重集合進行操作,每次可以所有元素+1+

1或新增乙個元素。輸出集合元素的k

k次方和。(來自jarden神犇)

題解:對於每個數字x

x,可以算出它+1+

1的價值:(x

+1)k

=ck0

∗xk+

ck1∗

xk−1

+...

+ckk

(x+1

)k=c

k0​∗

xk+c

k1​∗

xk−1

+...

+ckk

​所以用sis

i​維護所有數的i

i次方和,每次用k2k

2修改,效率o(m

k2)o

(mk2

)(卡常可過) 也可以寫個優化,變成o(m

k)o(

mk)具體見**1.o

(mk2

)1.o

(mk2

)

#include #include #define _(d) while(d(isdigit(c=getchar())))

using namespace std;

inline int r()

const int p=1e9+7;int m,k,s[52],c[52][52];

int main()

printf("%d\n",s[k]);

}return 0;

}

2.o(

mk)2

.o(m

k)(orzsuzhen)

#include#include#include#include#include#includeusing namespace std;

int r()

while(isdigit(c)) s=s*10+c-'0',c=getchar(); return s*p;

}typedef long long ll;

const int k=52,n=2e5+2; const ll p=1e9+7;

ll mul(ll a,int x) return s;}

int n,m,k; ll y,s1[k],s2[k],s[k],mi[n][k];

ll c(int n,int m)

int main()

while(m--)

else y++;

ll ans=0;

for(int i=0;i<=k;i++) ans=(ans+c(k,i)*mi[y][k-i]%p*s[i]%p)%p;

printf("%lld\n",(ans+p)%p);

}return 0;

}

Set資料結構

1 es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值 set 本身是乙個建構函式,用來生成 set 資料結構。const s new set 2,3,5,4,5,2,2 foreach x s.add x for let i of s 2 354上面 通過add...

set資料結構

set 資料結構,類似陣列。所有的資料都是唯一的,沒有重複的值。它本身是乙個建構函式。屬性和方法 應用 var arr 1 1,1 3,4 5,3 5 資料去重 varset new set arr console.log set console.log set.size 4 console.log...

set資料結構

set類似於陣列,但是成員的值都是唯一的,沒有重複的值 const s1 newset console.log s1,size 0 const s2 newset a b console.log s2,size 2 const s2 newset a b a console.log s2,size ...