2020 CCPC-Wannafly Winter Camp Day1_A 期望逆序对

博客探讨了在给定随机变量区间的情况下,如何构造排列以使得生成的随机序列逆序对期望达到最小。通过贪心策略,以区间中点从小到大排序来优化逆序对数量。解释了不同区间的关系对逆序对期望的影响,并提示需要预处理逆序数以避免超时。
摘要由CSDN通过智能技术生成

https://ac.nowcoder.com/acm/contest/3979/A

题目描述

有n个独立的随机变量,其中 xi的值是一个从[li,ri]中随机选取的整数,即对于[li,ri]中的任何一个整数 j,xi=j的概率都是 (ri−li+1)−1
现在你需要给出一个长度为n的排列p,那么可以得到一个长度为n的随机变量序列 。你的目标是让结果序列的逆序对个数的期望尽可能少。
求逆序对个数的期望的最小值。

输入描述:

第一行输入一个整数n(1≤n≤5×103)。
接下来 n 行每行两个整数 li,ri(1≤li≤ri≤109)。

输出描述:

输出一行一个整数,表示答案对 998244353 取模后的值。假设答案的最简分数表示是 x y \frac{x}{y} yx,你需要输出一个整数k满足 k×y≡x mod 998244353。

示例输入

3
1 2
2 3
1 3

示例输出

332748118

这道题题意说得不是很清楚。题意大概是,让你造一个排列p,p中第i个元素对应的是区间[li,ri]。这样你造的排列就会对应得到一个随机序列。而你要让这个随机序列的逆序对个数期望尽可能小。

怎样才能使逆序对个数期望尽可能小呢?

贪心策略为以区间中点从小到大排序。

为什么呢?

首先,两个区间的关系只有以下几种:

  1. 如果两个区间的中点重合,那么由于对称,这两个区间的顺序不影响逆序对个数的期望。
  2. 如果不在同一个位置,可以把一个区间补一点,使之中点重合。如果补的那块比较大,那么该区间应该在前面,反之在后面……

明白这个贪心策略后,就可以直接算概率啦~

记得预处理inv(不然会T)

#include<bits/stdc++.h>
#define ll long long
#define int long long
#define MOD 998244353
#define MAXN 5010
using namespace std;
typedef pair<int, int> P;
P p[MAXN]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值