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

I - Wish I Knew How to Sort

时间:2023-08-02 17:17:06浏览次数:35  
标签:Sort cnt frac Wish ll Knew sum dp

I - Wish I Knew How to Sort

题意

每次随机选择下标 \(i, j\) 交换 \(a[i], a[j]\),求变成不讲序列的期望次数。

思路

dp,同样也是期望 dp,先考虑暴力,可以状态压缩,那么 \(010\) 可以转移到:

\(100\),\(010\),\(001\)
这三种,然后我们发现,其实只有 \(001\) 有点用,而其他的就有点鸡肋,所以可以观察前两个串,会发现它们与目标串不同的地方有两个,所以它们与目标串的“距离”为 1,而第三个串的“距离”则为 0,那么就可以用这个“距离”作为代表这一类的标志、下标,我们发现这个“距离”最多也只有 \(\frac{n}{2}\) 所以可以用这个来做 dp,所以可以推出:\(dp_i = \frac{i^2}{\frac{n(n - 1)}{2}}dp_{i - 1} + \frac{\frac{n(n - 1)}{2}-i^2}{\frac{n(n - 1)}{2}}dp_i\),这个时候我们发现式子里出现了类似 \(x=x\) 的东东,所以移项:
\(dp_i = \frac{i^2}{\frac{n(n - 1)}{2}}dp_{i - 1} + \frac{\frac{n(n - 1)}{2}-i^2}{\frac{n(n - 1)}{2}}dp_i\)
\(dp_i - \frac{\frac{n(n - 1)}{2}-i^2}{\frac{n(n - 1)}{2}}dp_i = \frac{i^2}{\frac{n(n - 1)}{2}}dp_{i - 1}\)
\((1 - \frac{\frac{n(n - 1)}{2}-i^2}{\frac{n(n - 1)}{2}})dp_i = \frac{i^2}{\frac{n(n - 1)}{2}}dp_{i - 1}\)
\(dp_i = \frac{\frac{i^2}{\frac{n(n - 1)}{2}}dp_{i - 1}}{(1 - \frac{\frac{n(n - 1)}{2}-i^2}{\frac{n(n - 1)}{2}})}\)
这个时候式子就没问题了,直接 dp 算即可

code

点击查看代码
#include <iostream>
#include <iomanip>

using namespace std;
using ll = long long;

const int MaxN = 200010, mod = 998244353;

ll a[MaxN], t, n, cnt, sum;
ll dp[MaxN];

ll qpow(ll a, ll b) {
  ll res = 1;
  for (ll i = 1; i <= b; i <<= 1) {
    (b & i) && (res = res * a % mod);
    a = a * a % mod;
  }
  return res;
}

int main() {
  for (cin >> t; t; t--) {
  cin >> n, cnt = sum = 0;
    for (ll i = 1; i <= n; i++) {
      cin >> a[i], sum += a[i] == 0;
    }
    for (ll i = 1; i <= n; i++) {
      if (i <= sum) {
        cnt += a[i] != 0;
      } else if (i > sum) {
        cnt += a[i] != 1;
      }
    }
    cnt /= 2;
    for (ll i = 1; i <= cnt; i++) {
      ll a = n * (n - 1) % mod * qpow(2, mod - 2) % mod;
      dp[i] = ((1 + dp[i - 1] * (i * i % mod * qpow(a, mod - 2) % mod) % mod) * qpow(((1 - ((a - i * i % mod) + mod) % mod * qpow(a, mod - 2) % mod) % mod + mod) % mod, mod - 2) % mod + mod) % mod;
    }
    cout << (dp[cnt] % mod + mod) % mod << endl;
  }
  return 0;
}

标签:Sort,cnt,frac,Wish,ll,Knew,sum,dp
From: https://www.cnblogs.com/ybtarr/p/17600449.html

相关文章

  • YOLOv8+DeepSORT多目标跟踪(行人车辆计数与越界识别)
    课程链接:https://edu.51cto.com/course/34407.html本课程使用YOLOv8和DeepSORT对视频中的行人、车辆做多目标跟踪计数与越界识别,开展YOLOv8目标检测和DeepSORT多目标跟踪强强联手的应用。课程分别在Windows和Ubuntu系统上做项目演示,并对DeepSORT原理和代码做详细解读(使用PyCharm单......
  • merge_sort
    主要思想:分治关键步骤:**1.确定分界点,一般以数组的中点为界,即mid=(l+r)/2****2.递归排序左右边,mid左边left左边先排序,然后右边right再排序**3.最后归并合二为一,即排好序的left与right的数先存到数组temp中,再由temp传入原数组视频链接辅助理解【排序算法:归并排序【图解+代码......
  • 为什么list.sort()比Stream().sorted()更快?
    昨天写了一篇文章《小细节,大问题。分享一次代码优化的过程》,里面提到了list.sort()和list.strem().sorted()排序的差异。说到listsort()排序比stream().sorted()排序性能更好。但没说到为什么。有朋友也提到了这一点。本文重新开始,先问是不是,再问为什么。真的更好吗?先简......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 论文解读:DeepSort(目标跟踪)
    本文来自公众号“AI大道理”——————​论文原文:https://arxiv.org/abs/1703.07402SORT是一个比较简单的算法,用FrRCNN做探测,卡尔曼滤波和匈牙利算法做跟踪。缺点:线性恒速运动模型可能并不精确,未考虑相机的非线性运动。未考虑同一目标再次出现的重识别(......
  • 无涯教程-jQuery - Sortable排序函数
    能够排序功能可与JqueryUI中的交互配合使用。此功能可在任何DOM元素上启用可排序功能。单击并将其拖动到列表中的新位置,其他项将调整以适合。默认情况下,可排序项目共享可拖动属性。Sortable-语法$(function(){$("#sortable").sortable();$("#sortable").disabl......
  • 洛谷 P3243 [HNOI2015] 菜肴制作 - toposort 需自己理解翻译题面
    P3243[HNOI2015]菜肴制作题目描述知名美食家小A被邀请至ATM大酒店,为其品评菜肴。ATM酒店为小A准备了\(n\)道菜肴,酒店按照为菜肴预估的质量从高到低给予\(1\)到\(n\)的顺序编号,预估质量最高的菜肴编号为\(1\)。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些......
  • Python sorted() 函数和sort()函数对比分析
    Pythonsorted()函数一、概述sorted()函数是对所有可迭代的对象进行排序操作。sort与sorted的区别:sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作。list的sort方法返回的是对已经存在的列表进行操作,无返回值,而内置的sorted函数返回的是一个新的list,而不是......
  • sort排序
    数值排序: arr.sort((a,b)=>a.id-b.id); 字符串排序:varcompare=function(a,b){      if(a.name<b.name){        return-1;      }elseif(a.name>b.name){        return1;   ......
  • SORT:基于检测的目标跟踪的鼻祖
    本文来自公众号“AI大道理”​SORT是一种多目标跟踪的经典算法,整个算法是一些常规技术的简单组合,却达到了非常好的效果。Sort算法的核心是匈牙利匹配算法和卡尔曼滤波算法。​ 添加图片注释,不超过140字(可选)1、SORT简介SORT(SimpleOnlineandReal......