P3298 SDOI2013 泉 雜湊 容斥

2022-06-13 21:12:07 字數 989 閱讀 1276

給定n個元素,每個元素有六個屬性,求這n個元素中恰好有k個屬性相同的元素對數

範圍&性質:\(1\le n \le 10^6,1\le k\le 6\)

恰好,說明需要容斥,每個元素有多個屬性,說明需要雜湊判斷

好,此題完結

先考慮如何容斥:

按照正常想法,設\(g_i\)表示恰好i個屬性相同的元素對數,設\(f_i\)表示至少i個屬性相同的元素數目

對於\(i來說,\(g_j\)在\(f_i\)裡出現了\(c_j^i\)次,所以

\[f_i=\sum_^6 g_j\times c_j^i

\]\[g_i=f_i-\sum_^6 g_j\times c_j^i

\]那麼問題就變成了如何算\(f_i\),我們只要暴力列舉子集,確定哪些位置有,雜湊的排一下序,\(o(n)\)的掃一遍就可以了

#includeusing namespace std;

namespace zzc

t[maxn];

bool cmp(node a,node b)

void init()

} }

long long calc()

}sort(t+1,t+n+1,cmp);

long long res=0,cnt=0;

for(int i=2;i<=n;i++)

return res; }

void work()

}for(int s=0;s<=63;s++)

if(tmplong long res=calc()*c[tmp][k];

if((tmp-k)&1) ans-=res;

else ans+=res;

} printf("%lld",ans); }

}int main()

洛谷 P3298 SDOI2013 泉 容斥

傳送門 有n nn個年份,每個年份各有六個資訊,問有多少對年份恰好有k kk個資訊相同 恰好,很熟悉的容斥字眼 因為我們對於恰好的方案,不好統計,因為我們可以確定的是哪些資訊相同,但對於那些規定不相同的資訊我們無法進行快速的判斷,所以就改為儲存至少有k kk個相同的資訊 設f if i fi 表示恰...

SDOI2013 刺客信條

故事發生在1486 年的義大利,ezio 原本只是乙個文藝復興時期的貴族,後來因為家族成員受到聖殿騎士的殺害,決心成為一名刺客。最終,憑藉著他的努力和出眾的天賦,成為了傑出的刺客大師,他不僅是個身手敏捷的武林高手,飛簷走壁擅長各種暗殺術。刺客組織在他的帶領下,為被剝削的平民聲張正義,趕跑了原本統治義...

SDOI2013 保護出題人

出題人銘銘認為給sdoi2012 出題太可怕了,因為總要被罵,於是他又給sdoi2013 出題了。參加sdoi2012 的小朋友們釋放出大量的殭屍,企圖攻擊銘銘的家。而你作為sdoi2013的參賽者,你需要保護出題人銘銘。殭屍從唯一一條筆直道路接近,你們需要在銘銘的房門前放置植物攻擊殭屍,避免殭屍碰...