首页 > 其他分享 >SS241119C. 甜果(sugar)

SS241119C. 甜果(sugar)

时间:2024-11-19 19:40:50浏览次数:1  
标签:frac 甜果 len sugar SS241119C sim

SS241119C. 甜果(sugar)

题意

有 \(n\) 个人,每个人初始有 \(a_i\) 颗糖果,有 \(n\) 个事件,事件 \(i\) 是如果 \(a_i > a_{b_i}\),那么 \(a_i' : = a_i + w_i\)。

问所有事件以随机的排列的顺序依次发生后,每个人的期望糖果数量。

思路

即求每个事发生的概率 \(p_i\),那么 \(ans_i = a_i + p_i w_i\)。

考虑什么时候 \(p_i\) 会发生,什么时候不会发生。

设 \(t_i\) 表示操作 \(i\) 发生的时间。

  • 当 \(a_i \le a_{b_i}\) 时,\(p_i = 0\)。
  • 当 \(a_i > a_{b_i}+w_{b_i}\) 时,\(p_i=1\)。
  • 当 \(a_{b_i} < a_i \le a_{b_i}+w_i\) 时,如果 \(p_{b_i} =1 且 t_{b_i} < t_i\),\(p_i=0\),否则 \(p_i = 1\)。

这启发我们对于第三种情况,从 \(i\) 向 \(b_i\) 连边。这样我们就会连出若干条链。而每个 \(p_i\) 只和与它同一条链的点,进一步地,只和链上在它后面的那些点是否发生有关。

对于一条链,上面的点 \(x_0\),我们扔掉在它前面的那些点,使 \(x_0\) 成为链头,后面依次是 \(x_1 \sim x_{len-1}\)。

如果 \(t_{x_{j+1}} > t_{x_j}\),那么 \(p_{x_j}=0\),因此我们枚举最小的 \(j\),满足 \(t_{x_{j+1}} > t_{x_j}\),那么有 \(p_{x_j}=0\),那么 \(x_{j+1} \sim x_{len-1}\) 的 \(p\) 是多少,对 \(p_{x_0}\) 都没有影响了。

因此有 \(t_{x_0} > t_{x_1} > \cdots > t_{x_j} < t_{x_{j+1}}\)。

当 \(j\) 是奇数的时候 \(p_{x_0}=1\),满足 \(t_{x_0 \sim x_j}\) 降序的方案数是 \(\frac{n!}{(j+1)!}\),这个方案还需要减去不满足 \(t_{x_j} < t_{x_j+1}\) 的情况,即 \(\frac{n!}{(j+2)!}\)。

因此 \(p_{x_0} = \frac{1}{n!}\sum_{j=1}^{len} (-1)^j \frac{n!}{j!} = \sum_{j=1}^{len} \frac{(-1)^j}{j!}\)。

这个长成错排公式的样子。可以递推预处理错排公式,然后对每个 \(x_0\) 求概率。时间复杂度 \(O(n)\)。

标签:frac,甜果,len,sugar,SS241119C,sim
From: https://www.cnblogs.com/liyixin0514/p/18555478

相关文章

  • SqlSugar使用AOP获取sql语句
    publicISqlSugarClientDb{get{//sql执行前//_currentDb.Aop.OnLogExecuting=(sql,pars)=>//{////stringn1=UtilMethods.GetNativeSql(sql,pars);//日志使用......
  • SqlSugarClient 代码优先建表, 根据给定的实体类,创建SQL语句, 之后创建MySQL表
    usingSqlSugar;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Text;namespaceDDD{///<summary>//////SqlSugarClient代码优先建表///根据给定的实体类,创建SQL语句,之后创建MySQL表//////......
  • 真的被Sqlsugar给气到了!
    博客园潜水多年,账号都搞忘记好几个,一直没有写什么东西,但是这次真忍不了了,被sqlsugar出现的奇葩问题和作者的奇葩处理方式给气到了。起因是在使用Sqlsugar过程中,偶然发现了一个问题,确认这个问题真实存在后,我就去提了issue:模糊查询遭遇特殊符号时的问题·Issue#1303·DotNetN......
  • Freesql、SqlSugar测试有感
    突然心血来潮测试了一下Freesql和SqlSugar的批量插入和批量更新性能,一搜测评一大堆,但是没找到自己想要的结果,自己动手测试一下基本的批量插入和批量更新性能。废话不多说直接贴代码1usingFreeSql;2usingFreeSql.DataAnnotations;3usingSqlSugar;45namesp......
  • Oracle 存储过程分页 + Sqlsugar调用
    一、Oracle存储过程分页1createPROCEDUREGetPatientVisitData(2p_HospIdINVARCHAR2,--院区编码3p_strDateINVARCHAR2,--开始日期4p_endDateINVARCHAR2,--结束日期5p_page_sizeINNUMBER,--每页记录数6p_page_numberIN......
  • Sqlsugar调用Oracle的存储过程
    前段时间在搬迁项目的时候,遇到一个问题,就是用sqlsugar调用oracle的存储过程的时候调用不了;当时卡了一整天,现在有空了把这个问题记录分享一下。先去nuget上安装一下sqlsugar的包:再安装一个oracle的驱动:添加一下Json包:再去创建一下连接 再创建一个测试用的存储过程crea......
  • C# SqlSugar学习笔记
    前言今天介绍一款C#ORM框架什么是ORM?来看一下百度术语:对象关系映射(英语:ObjectRelationalMapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 通俗理解ORM我们只需要知道ORM是一种技术,使用了ORM之后我们就不必在......
  • .NET使用SqlSugar实现单列批量更新的几种实现和对比
    说明:SqlSugarCore版本:5.1.4.169方式1使用SqlSugar的Updateable特点:代码可读性好,易于维护支持事务和异常处理适用场景:中小型数据量更新优点:代码简洁易于调试缺点:性能相对较低内存占用较大publicasyncTask<int>BatchUpdateColumnAsync(stringtab......
  • SqlSugar 达梦数据库大数据量,长字符串添加,数据库为空
    SqlSugar实体添加数据时,发现字符串超过某个长度,在数据库中就空白,插入失败,原因如下:达梦Clob、Text类型用法版本需升级到5.1.4.92及以上版本//需在长字符串的属性中加入以下[SugarColumn(SqlParameterDbType=typeof(NClobPropertyConvert))]publicstringName{get;......
  • 一个SQLSugar字典操作使用问题
    问题在页面进行删除对象操作时报错,列名无效:列名'IsDeleted'无效。列名'CreateTime'无效。列名'Name'无效。基本信息数据库:SqlServerExpress16ORM框架:SQLSugar分析日志中打印了sql语句,直接复制sql语句到SSMS中,同样提示列名无效,可以确定列名有问题;公司的产品框......