雅禮集訓7 10 attack(容斥)

2021-08-21 08:25:17 字數 1393 閱讀 2350

題意:

題解:

感覺挺妙的。

對於任意矩陣都有 1*1 - 1*2 - 2*1 + 2*2 = 1。我們用這個來做容斥就好了。

對於每個點被覆蓋的次數,可以用單調佇列。

#include 

using

namespace

std;

typedef

long

long ll;

const

int n=2e3+50, mod=998244353;

inline

int add(int x,int y)

inline

int dec(int x,int y)

inline

int mul(int x,int y)

inline

int power(int a,int b,int rs=1)

char mp[n][n];

int n,m,k,ans;

int s0[n][n],s1[n][n],s2[n][n],s3[n][n];

ll ss[n][n];

template

inline

void revx(t a[n])

template

inline

void revy(t a[n])

inline

void solve(int *h,int *s)

}inline

void solve(char o[n],int s[n])

inline

int calc_sum(ll rs=0)

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

for(int j=1;j<=m;j++) ss[i][j]=0;

return rs%mod;

}int main()

ans=add(ans,calc_sum());

memset(ss,0,sizeof(ss));

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

for(int j=1;j<=m;j++)

ans=dec(ans,calc_sum());

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

for(int j=1;j<=m;j++)

ans=dec(ans,calc_sum());

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

for(int j=1;j<=m;j++)

ans=add(ans,calc_sum());

cout

}

雅禮國慶集訓

灑落君臣契,飛騰戰伐名。杜甫 公安縣懷古 noip 前的乙個月。這浸滿熱血的虔信,真的會化作墓碑嗎?或許明日我們不再是戰友,但人生終將有無數個此時。define f z,u,v for int z u des z v z des z z struct bnd struct tup template ...

雅禮集訓 2017 價

傳送門 乙個不太顯然的最小割做法。我們這麼連邊 源點向藥物連 infty p i 容量的邊,藥物向它對應的藥材連 infty 容量的邊,藥材向匯點連 infty 容量的邊。用源點的流量減去最小割,再負回來就可以求出答案了。怎麼理解呢?割掉一條邊表示不選其對應的藥物或藥材,我們發現最後的方案一定是完美...

雅禮集訓Day4

今天炸的1p。t1,給你100次詢問,每次l,r,選 l,r 中的若干數進行異或,求有多少種結果,1 l r 1e18.做法 暴力很顯然是將l,r這些數加入線性基,然後算一下線性基里有多少個數。我們可以考慮線性基的每一位最早在多久被加入。這個就可以看l了,它二進位制的最高位很顯然是一開始就加入線性基...