洛谷 P3298 SDOI2013 泉 容斥

2021-10-10 06:22:28 字數 1435 閱讀 9341

傳送門

有n

nn個年份,每個年份各有六個資訊,問有多少對年份恰好有k

kk個資訊相同

恰好,很熟悉的容斥字眼

因為我們對於恰好的方案,不好統計,因為我們可以確定的是哪些資訊相同,但對於那些規定不相同的資訊我們無法進行快速的判斷,所以就改為儲存至少有k

kk個相同的資訊

設f

if_i

fi​表示恰好有i

ii個資訊相同的方案,g

ig_i

gi​表示滿足至少有i

ii個資訊相同的年份

但直接計算g

gg,發現會原地tptp

tp,所以再換一種方式,g

gg裡的年份只要滿足i

ii個資訊相同就可以,這樣就會出現相同年份,但有j

jj個資訊相同(

j>i)

(j>i)

(j>i)

,如此,在g

gg中就會被統計到cji

c_j^i

cji​次gi=

∑j=i

6fj∗

cj

ig_i=\sum_^6f_j*c_j^i

gi​=j=

i∑6​

fj​∗

cji​

對於哪些資訊相同,我們可以列舉狀態,1

11就表示這個位置的資訊相同,然後用雙雜湊來判斷是否滿足

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define m1 1000000007

#define m2 998244353

#define b1 137

#define b2 131

using

namespace std;

inline ll read()

while

(s>=

'0'&&s<=

'9')

return d*f;

}ll n=

read()

,k=read()

;ll s[

100005][

10],o[10

],p[10]

;ll c

(ll x,ll y)

struct hashh[

100005];

bool cmp (hash a,hash b)

ll hash()

return sum;

}int

main()

cout

}

P3298 SDOI2013 泉 雜湊 容斥

給定n個元素,每個元素有六個屬性,求這n個元素中恰好有k個屬性相同的元素對數 範圍 性質 1 le n le 10 6,1 le k le 6 恰好,說明需要容斥,每個元素有多個屬性,說明需要雜湊判斷 好,此題完結 先考慮如何容斥 按照正常想法,設 g i 表示恰好i個屬性相同的元素對數,設 f i...

洛谷P2434 SDOI 區間

解題思路 這道題就是簡單的模擬啊。不過愣是沒有模擬對,看來還需要加強 實現能力。先按照左端點從小到大排序,每次驗證當前區間左端點是否大於設定的右端點,如果大於,說明不相交,就輸出設定的左右端點,如果小於等於,說明有相交的部分,不斷更新右端點。include include include inclu...

洛谷P2486 SDOI2011 染色

輸入格式 輸出格式 對於每個詢問操作,輸出一行答案。輸入樣例 1 6 5 2 2 1 2 1 1 1 21 3 2 42 5 2 6q 3 5 c 2 1 1 q 3 5 c 5 1 2 q 3 5 輸出樣例 1 典型的樹鏈剖分 線段樹,線段樹維護 區間左右端點顏色 和 區間顏色數。注意 當 上傳或...