給定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的參賽者,你需要保護出題人銘銘。殭屍從唯一一條筆直道路接近,你們需要在銘銘的房門前放置植物攻擊殭屍,避免殭屍碰...