出題的訣竅
題解:
由於他是在每一行選取乙個元素,然後縱向來比較,這裡行的順序是不會影響的,所以我們將每乙個數存入雜湊表中,然後對每乙個數來進行考慮。
第一行的數,對答案的貢獻為mn-1,而第二行對答案的貢獻為mn-2*(m-1)...以此類推。
這裡注意對同一行有多個相同元素的情況考慮一下。
**如下:
#include usingnamespace
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...