牛客練習賽42 出題的訣竅(數學 hash)

2022-03-02 04:18:27 字數 876 閱讀 8996

出題的訣竅

題解:

由於他是在每一行選取乙個元素,然後縱向來比較,這裡行的順序是不會影響的,所以我們將每乙個數存入雜湊表中,然後對每乙個數來進行考慮。

第一行的數,對答案的貢獻為mn-1,而第二行對答案的貢獻為mn-2*(m-1)...以此類推。

這裡注意對同一行有多個相同元素的情況考慮一下。

**如下:

#include using

namespace

std;

typedef

long

long

ll;const

int n = 2005, m = 3000484, mod = 1e9 + 7

;ll a[n][n], pm[n];

intn, m;

struct

edge e[n *n];

ll head[m], tot, h[m];

ll f[n * n], d[n *n];

void

adde(ll u, ll v, ll i)

void

hsh(ll x, ll y)

h[now] =x;

adde(now, x, y);

}int

main()

}ll ans = 0

, cnt, num, pr;

for(int x = 0; x < m; x++)

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

for(int i = 1; i <= num; i++) }}

cout

}

牛客練習賽42 C 出題的訣竅

這個題就是對於每個數算貢獻,如果有相同的數,只計算先出現的數的貢獻 對於數x,若它在前i行的數目分別為a1,a2.ai。則這個數的貢獻應為 ai x n a1 n a2 n a i 1 n m i 次方。這樣想,如果不要求不重複算,那大小就直接是ai n m 1 了 n a1 n a2 n a i ...

牛客練習賽42題解

寫題寫的感覺自己彷彿是個傻子 給定兩個等長的由小寫字母構成的串 a,b,其中 a b n 現在你需要求出乙個子區間 l,r 使得 lcp a l,r b l,r lcs a l,r b l,r lcp a l,r b l,r lcs a l,r b l,r 最大,並輸出這個值。lcp s,t 表示s...

牛客練習賽42(A,B)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 給定兩個等長的由小寫字母構成的串 a,ba,b,其中 a b n 現在你需要求出乙個子區間 l,r 使得 lcp a l,r b l,r lcs a l,r b l...