当前位置:网站首页>775 Div.1 C. Tyler and strings combinatorial mathematics
775 Div.1 C. Tyler and strings combinatorial mathematics
2022-07-05 04:45:00 【Strezia】
C
Combinatorial mathematics ,1900, Array of numbers
The question
give s , t s, t s,t Two sequences , The lengths are n , m n,m n,m, ask s s s How many sorting methods meet s s s The dictionary order of t t t Small . 1 ≤ n , m ≤ 2 e 5 1\leq n,m\leq 2e5 1≤n,m≤2e5
Ideas
Because it is compared in dictionary order , So if s 1 < t 1 s_1<t_1 s1<t1 After that, you can row at will , So before considering enumeration i − 1 i-1 i−1 The bits are the same and s i < t i s_i<t_i si<ti The sorting methods of are c n t i cnt_i cnti Kind of , The final answer is ∑ i = 1 i = n c n t i \sum_{i=1}^{i=n} cnt_i ∑i=1i=ncnti .
So how to ask c n t i cnt_i cnti Well ? If repeatable arrangement is not considered , that c n t i = n o w × ( n − i ) ! cnt_i= now \times (n-i)! cnti=now×(n−i)! , namely To the first i Bit current Satisfaction is less than t i t_i ti Multiply the number of by the total arrangement of the following numbers ( because i i i The following numbers can be taken at will ). n o w now now You can directly use the number array to maintain the prefix and ( Because of the former i − 1 i-1 i−1 The two bit sequences are the same , So you can directly reduce that number 1). So the key problem is how to add repeatable permutation .
First, the repeatable arrangement should be in n ! n! n! Divided by the factorial of the number of occurrences of each element . That is, when we traverse to i i i When a , To be in ( n − i ) ! (n-i)! (n−i)! Divided by c n t 1 ! × c n t 2 ! × c n t i ! . . . . × c n t n ! {cnt_1!\times cnt_2!\times cnt_i!....\times cnt_n!} cnt1!×cnt2!×cnti!....×cntn!
among c n t 1 cnt_1 cnt1 yes Before subtraction i − 1 i-1 i−1 Digit number The number of corresponding numbers after . Then we can preprocess out i = 0 i=0 i=0 The above formula of tense is recorded as fenzi
, from
1 c n t 1 ! × c n t 2 ! × ( c n t i − 1 ) ! . . . . × c n t n ! = 1 c n t 1 ! × c n t 2 ! × c n t i ! . . . . × c n t n ! × c n t i \frac{1}{cnt_1!\times cnt_2!\times (cnt_i-1)!....\times cnt_n!}=\frac{1}{cnt_1!\times cnt_2!\times cnt_i!....\times cnt_n!}\times cnt_i cnt1!×cnt2!×(cnti−1)!....×cntn!1=cnt1!×cnt2!×cnti!....×cntn!1×cnti, After each iteration, you just need to fenzi *= cnt[t[i]]
And update the cnt[t[i]]
that will do .
ps. Don't forget to consider s s s It may happen to be t t t Prefix of , Began to forget , Fortunately, there are examples 1
Code
void solve() {
cin >> n >> m;
fac[0] = 1;
for(int i = 1; i <= n; i++) {
fac[i] = (fac[i-1] * i) % P;
}
for(int i = 1; i <= n; i++) {
cin >> s[i];
update(s[i], 1);
cnt[s[i]]++;
}
for(int i = 1; i <= m; i++) {
cin >> t[i];
}
int ans = 0;
int mi = min(n, m);
int fz = 1;
for(int i = 1; i <= 2e5; i++) {
if(cnt[i]) {
fz = fz * fac[cnt[i]] % P;
}
}
fz = power(fz, P - 2);
int flag = 1;
if(n >= m) {
flag = 0;
}
for(int i = 1; i <= mi; i++) {
int p = ask(t[i] - 1);
ans = (ans + p * fac[n-i] % P * fz % P) % P;
if(!cnt[t[i]]) {
flag = 0;
break;
}
fz = fz * cnt[t[i]] % P;
cnt[t[i]]--;
update(t[i], -1);
}
ans += flag;
ans %= P;
cout << ans << endl;
}
边栏推荐
- Wan broadband access technology V EPON Technology
- 49 pictures and 26 questions explain in detail what is WiFi?
- level17
- Special information | real estate and office buildings - 22.1.9
- [groovy] closure (closure call | closure default parameter it | code example)
- Flink集群配置
- Variable category (automatic, static, register, external)
- You Li takes you to talk about C language 7 (define constants and macros)
- English topic assignment (26)
- Raki's notes on reading paper: code and named entity recognition in stackoverflow
猜你喜欢
The principle of attention mechanism and its application in seq2seq (bahadanau attention)
电源管理总线 (PMBus)
[groovy] closure (closure parameter binding | curry function | rcurry function | ncurry function | code example)
Thematic information | carbon, carbon neutrality, low carbon, carbon emissions - 22.1.9
函數(易錯)
托管式服务网络:云原生时代的应用体系架构进化
SQL set operation
Key review route of probability theory and mathematical statistics examination
Solution of circular dependency
线上故障突突突?如何紧急诊断、排查与恢复
随机推荐
2021 electrician Cup - high speed rail traction power supply system operation data analysis and equivalent modeling ideas + code
2022-2028 global and Chinese FPGA prototype system Market Research Report
Raki's notes on reading paper: code and named entity recognition in stackoverflow
程序员应该怎么学数学
level18
2021 higher education social cup mathematical modeling national tournament ABCD questions - problem solving ideas - Mathematical Modeling
Looking at Chinese science and technology from the Winter Olympics: what is the mystery of the high-speed camera that the whole people thank?
Cookie learning diary 1
Function (error prone)
取余操作是一个哈希函数
Neural networks and deep learning Chapter 2: machine learning overview reading questions
JVM 原理和流程简介
Practice | mobile end practice
Managed service network: application architecture evolution in the cloud native Era
Neural networks and deep learning Chapter 3: linear model reading questions
Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套
Neural networks and deep learning Chapter 6: Circular neural networks reading questions
windows下Redis-cluster集群搭建
可观测|时序数据降采样在Prometheus实践复盘
2022-2028 global and Chinese equipment as a Service Market Research Report