首页 > 其他分享 > CF1753C Wish I Knew How to Sort Sol

CF1753C Wish I Knew How to Sort Sol

时间:2022-11-08 09:48:22浏览次数:48  
标签:Sort return pw int dfrac bas CF1753C Wish Mod

喵喵题。考场上完全想不到。

很难想到把序列排序,得出最后的排序结果。

同时很难想到,原序列左半边的 \(1\) 会变成 \(0\),右半边的 \(0\) 会变成 \(1\)。

很难想到这两部分的数量是一样的。

接着很难发现,对于倒数第 \(i\) 次交换,交换成功的概率是 \(p_i=\dfrac{i^2}{\dfrac{n(n-1)}{2}}\)。

上面是成功交换的方案数(此时左边剩下 \(i\) 个 \(1\),右边剩下 \(i\) 个 \(0\))。

下面是总选择方案数。反正随便选两个就行。

那么期望就是 \(\dfrac{1}{p_i}\)。答案就是 \(\sum\limits_{i=1}^{cnt}\dfrac{1}{p_i}\)没了。

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 2e5 + 10, Mod = 998244353;
int t, n, cntx, a[N];

inline int qpow(int bas, int pw) {
  int mul = 1; for (; pw; (bas *= bas) %= Mod, pw >>= 1)
    if (pw & 1) (mul *= bas) %= Mod; return mul;
} inline int inv(int x) { return qpow(x, Mod - 2); }

inline void solve() {
  cin >> n; cntx = 0;
  for (int i = 1; i <= n; ++i) cin >> a[i], cntx += !a[i];
  int cnt = 0; for (int i = 1; i <= cntx; ++i) cnt += a[i];
  int basc = n * (n - 1) / 2 % Mod;
  int res = 0; for (int i = 1; i <= cnt; ++i)
    (res += basc * inv(i * i % Mod) % Mod) %= Mod;
  cout << res << endl; return ;
}

signed main() {
  ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0);
  cin >> t; while (t--) solve(); return 0;
}

标签:Sort,return,pw,int,dfrac,bas,CF1753C,Wish,Mod
From: https://www.cnblogs.com/MistZero/p/CF1753C-Sol.html

相关文章

  • C++ get random via random_device, mt19937_64,uniform_int_distribution, quick so
    #include<chrono>#include<ctime>#include<fstream>#include<iostream>#include<random>#include<sstream>#include<thread>#include<unistd.h>#include......
  • 33. Search in Rotated Sorted Array
    Supposeanarraysortedinascendingorderisrotatedatsomepivotunknowntoyoubeforehand.(i.e., 0124567 mightbecome 4567012).Youaregiv......
  • JAVA8-Lambda-(sorted+Comparator)排序
    使用场景:排队的时候按照个子大小排队使用API排序和MySql中的升序降序规则一样。在排序时需要注意的是降序需要用到reversed();publicstaticvoidmain(String[]......
  • Hive Order By,Sort by,Distribute By,Cluster By 排序区别
    OrderByOrderBy:全局排序,只有一个Reducer,就算提前设置好n个reducerorderby也是只执行一个reducer,因为全局排序,排序的仅仅是一个表罢了。orderby对于大规模数据集......
  • 【100个 Unity实用技能】| C# 中 Sort() 对List中的数据排序的几种方法 整理总结
    Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意......
  • Solution-P7650 [BalticOI 2007 Day 1] Ranklist Sorting(DP)
    容易发现一条性质:每个人最多只会被移动一次。说明人只有两种:移动的和不移动的。考虑枚举所有不移动的人,并最优化其它人的移动顺序。最开始第\(i\)个人的起点为\(i\),终......
  • Collections-sort
    importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;/**1.Collections.sort(list);只能对List排序,注意:list中的*元素类型必须具备可......
  • s-sort命令
    对文本操作进行排序,以行为单位,依次根据ascii值进行比较,默认的排序方式为升序sort[-bcfMnrtk][源文件][-o输出文件]补充说明:sort可针对文本文件的内容,以行为单位来排......
  • 排序之希尔排序(shell sort)
    前言本篇博客是在伍迷兄的博客基础上进行的,其​​博客地址​​点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客......
  • Sort operation used more than the maximum 33554432 bytes of RAM
    在数据量超大的情形下,任何数据库系统在创建索引时都是一个耗时的大工程,下面这篇文章主要给大家介绍了关于MongoDB排序时内存大小限制与创建索引的注意事项的相关资料,需......