2020牛客多校第二場 A , J 題

2021-10-08 02:30:44 字數 2433 閱讀 7832

j題

just shuffle

題意:已知置換 e = 變換k次後得到乙個置換a(已知),求置換e變換一次得到的置換x。

題解:這題我們能想到,對於變換規則,會存在一些環,意味著變換環的大小後置換不變。我們針對每個環考慮,設環的大小為len,變換一次的狀態等價於變換 len * y + 1 次,那我們從已知考慮,已知變換k次後的狀態,那麼我們就能推出變換 2 * k ,3 * k,4 * k , … , 次後的狀態( 我們將變換k次當成一單位次的變換 )。那我們猜想如果 x * k = len * y + 1, 方程兩邊同時 % len , 方程變成 x * k % len = 1;解這個方程,可以列舉答案,利用逆元的定義,答案在 0 - len -1 之間。

#include

#define ll long long

using

namespace std;

const

int maxn =

1e5+10;

int a[maxn]

;int vis[maxn]

,ans[maxn]

,to[maxn]

;vector<

int> g;

void

dfs(

int p)

}voidgo(

int k)

for(

int i=

0;i) ans[g[i]

]= g[

(i+inv)

%len];}

intmain()

}for

(int i=

1;i<=n;i++

)printf

("%d "

,ans[i]);

printf

("\n");

}

a題

all with pairs

題解:將每個字串的字尾hash值儲存起來,用雙hash值來減衝突,然後列舉每個字首,在hash_map中找字尾,但是需要去重,對於兩個aaa來說,我列舉a ,aa ,aaa時,另乙個aaa都計算了貢獻,而只能計算aaa的貢獻,因為要最長。我們發現如果我們計算了aaa的貢獻,那麼必然也要計算a 和 aa的貢獻,這樣就重複了,所以這其實就是乙個字串next陣列,我們只需要減去next陣列的貢獻就行了。

#include

#define ll long long

using

namespace std;

const

int maxn =

1e6+10;

ll base[2]

=;ll mod[2]

=, h[3]

[maxn]

;ll f[2]

[maxn]

;void

init()

ll gets

(int l,

int r,

int id)

const ll mood=

1e9+7;

const

int maxsz=

3e6+7;

template

<

typename key,

typename val>

class

hash_map

; vector e;

int head[maxsz]

,nume,numk,id[maxsz]

;int

geths

(pair

&u) val&

operator

(key u)

,head[hs]

=nume,e[nume]

.v;}

void

clear()

};hash_map

,ll> mp;

string s[maxn]

;int nt[maxn]

;void

getnext

(string ss)

else k = nt[k];}

}ll cnt[maxn]

;const ll modd =

998244353

;int

main()

pair tmp;

for(

int j=

1;j<=len;j++)}

for(

int i=

1;i<=n;i++

)getnext

(s[i]);

pair tmp;

for(

int j=len;j>=

1;j--)}

ll ans =0;

// for(int i=1;i<=10;i++) cout(int i=

1;i) cout<}

2020牛客多校第二場G

題意 給你兩個序列,問你從第乙個序列中有多少個與第二個序列長度相同的並且對應位置都是大於等於第二個序列的子串。題解 神仙bitset題,維護第二個序列的bitset,例如樣例中的 2 3 3,按照大小排序後維護的m個bitset為 0100,0110,0111,樣例中的資料維護的bitset不是很好...

2020牛客多校第二場B題Boundary

boundary 題意 2d平面上n個點,求這些點落在經過原點 0,0 的圓上的最大數量 思路 有很多解法。1 比賽時根據圓的標準式 x a 2 y b 2 r 2 x a y b r 2 x a 2 y b 2 r2又因為圓過原點 0,0 0,0 0,0 所以 r2 a2 b 2r 2 a 2 b...

牛客多校第二場 J farm

輸入描述 the first line of input contains 3 integers n,m,t n m 1000000,t 1000000 for the next n lines,each line contains m integers in range 1,n m denotin...