码迷,mamicode.com
首页 > 其他好文 > 详细

Dwango Programming Contest 6th -B

时间:2020-01-27 23:59:07      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:cout   false   alt   ram   include   onclick   pre   计算   code   

期望

按每个空隙计算 对于第$i$个空隙 对于第$j$个跨过这段的概率是$\frac{1}{i-j+1}$ 因为跨过当且仅当$[j+1,i]$之间都不先于$j$合并 求一个逆元前缀和即可

技术图片
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5, P = 1e9 + 7;
int n;
int x[maxn], inv[maxn];
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n;
    for(int i = 1; i <= n; ++i) {
        cin >> x[i];
    }
    inv[1] = 1;
    for(int i = 2; i <= n; ++i) {
        inv[i] = 1LL * (P - P / i) * inv[P % i] % P;
    }
    for(int i = 2; i <= n; ++i) {
        inv[i] = (inv[i] + inv[i - 1]) % P;
    }
    int ans = 0;
    for(int i = 1; i < n; ++i) {
        ans = (ans + 1LL * inv[i] % P * (x[i + 1] - x[i]) % P) % P;
    }
    for(int i = 1; i < n; ++i) {
        ans = 1LL * ans * i % P;
    }
    cout << ans << \n;
    return 0;
}
View Code

 

Dwango Programming Contest 6th -B

标签:cout   false   alt   ram   include   onclick   pre   计算   code   

原文地址:https://www.cnblogs.com/19992147orz/p/12237096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!