当前位置:网站首页>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;
}
边栏推荐
- Solution of circular dependency
- Interface joint commissioning test script optimization V5.0 (end)
- Function (basic: parameter, return value)
- [ideas] 2021 may day mathematical modeling competition / May Day mathematical modeling ideas + references + codes
- 直播預告 | 容器服務 ACK 彈性預測最佳實踐
- [Chongqing Guangdong education] National Open University 2047t commercial bank operation and management reference test in autumn 2018
- 次小生成树
- Mode in BST (binary tree & Notes on question brushing)
- Power management bus (pmbus)
- 【acwing】837. Number of connected block points
猜你喜欢

A survey of automatic speech recognition (ASR) research

2022-2028 global and Chinese FPGA prototype system Market Research Report

【acwing】528. cheese

windows下Redis-cluster集群搭建

mxnet导入报各种libcudart*.so、 libcuda*.so找不到

【acwing】837. Number of connected block points

Key review route of probability theory and mathematical statistics examination

The principle of attention mechanism and its application in seq2seq (bahadanau attention)

Function (error prone)

【acwing】240. food chain
随机推荐
Discussion on the dimension of confrontation subspace
How to carry out "small step reconstruction"?
Key review route of probability theory and mathematical statistics examination
托管式服务网络:云原生时代的应用体系架构进化
Introduction to RT thread kernel (5) -- memory management
2021 electrician cup (the 12th "China Society of electrical engineering Cup" National Undergraduate electrician mathematical modeling) detailed ideas + codes + references
TPG x AIDU | AI leading talent recruitment plan in progress!
Looking at Chinese science and technology from the Winter Olympics: what is the mystery of the high-speed camera that the whole people thank?
2022 American College Students' mathematical modeling ABCDEF problem thinking /2022 American match ABCDEF problem analysis
Hypothesis testing -- learning notes of Chapter 8 of probability theory and mathematical statistics
PHP读取ini文件并修改内容写入
Live broadcast preview | container service ack elasticity prediction best practice
Neural network and deep learning Chapter 1: introduction reading questions
Function overloading
Uncover the seven quirky brain circuits necessary for technology leaders
包 类 包的作用域
Raki's notes on reading paper: soft gazetteers for low resource named entity recognition
WeNet:面向工业落地的E2E语音识别工具
Stage experience
SPI read / write flash principle + complete code