首页 > 其他分享 >CF1909I Short Permutation Problem 题解

CF1909I Short Permutation Problem 题解

时间:2024-05-24 22:40:13浏览次数:13  
标签:满足条件 Short frac 题解 反演 ge 排列 CF1909I 二项式

这是一道 *1900 的黑。

考虑枚举 \(m\),将 \(<\frac m 2\) 和 \(\ge \frac m 2\) 的数分开讨论。考虑相邻两个数 \(a,b\ (a>b)\) 分别在 \(\frac m 2\) 的两侧,则有 \(b\ge m-a\)。

考虑将所有数按某种方法从小到大排序,以 \(\min(x,m-x)\) 为第一关键字,\(-x\) 为第二关键字,则排列中的相邻两个数满足条件必须有在上述序列中位置靠前的那个数 \(\ge \frac m 2\)。

考虑对于每一个 \(k\) 求出钦定 \(k\) 对相邻的数满足条件的排列个数。这等价于将排列划分为 \(n-k\) 个段,每段中的任意相邻两个数均满足条件的排列个数。

接下来考虑根据上面发现的那个性质求这个东西。初始化有 \(c=n-k\) 个位置可以插入,然后依次枚举上述有序序列中的每个数插入,每次插入时方案数要乘上 \(c\),如果当前数 \(<\frac m 2\) 则 \(c\) 减小一,否则 \(c\) 增加一。

发现这个序列的形态一定是在开头有若干个 \(\ge m\) 的数,接着 \(\ge \frac m 2\) 和 \(< \frac m 2\) 的数交替出现。于是可以预处理出阶乘和所有可能用到的幂,每次 \(\mathcal O(1)\) 求出方案数。然后发现可能出现空段,二项式反演一下即可。

求出钦定 \(k\) 个的方案数以后就可以直接再二项式反演一遍,求出每个 \(k\) 的答案。然后就做完了,二项式反演可以 NTT 优化,记得系数的多项式要放在外面做变换,否则常数太大,时间复杂度 \(\mathcal O(n^2\log n)\)。

code

标签:满足条件,Short,frac,题解,反演,ge,排列,CF1909I,二项式
From: https://www.cnblogs.com/zifanoi/p/18211795

相关文章

  • 【达梦问题解决】to_date转换之【文字与格式字符串不匹配】
    【问题描述】因为要转换的值中包含了不属于时间格式的字符(T,Z),这可能是数据迁移时时间参数设置不对导致的。具体没有进行考究【问题解决】使用DATE分隔符解决【手册链接】格式符解释实际分隔符的处理办法【自定义转换函数】这里的自定函数是不完善的,因为我的数......
  • CF1939D Big Persimmon 题解
    题目链接点击打开链接题目解法什么神仙题/jy先把\(a_i\)都\(\times2\),默认一开始先手比后手快\(1\)时间,可以避免两个人同时结束一个柿子的情况朴素的\(dp\)是显然的,令\(f_{l,r,det}\)表示当前剩下区间\([l,r]\)中的柿子,先手比后手快了\(det\)秒,先手最多能比后......
  • 充电桩——微信小程序,缴纳的1000元交易保障金,问题解答。
    1、小程序后台,申请退款保障金有一条不符合要求,无法退款。 2、咨询客服,能否退款然后再以公司名义缴纳保证金,等待回复:暂不支持对公转账,只能微信扫码支付缴纳哈。退保的话,支持退回对公账户。详情请查看小程序交易保证金管理规定https://developers.weixin.qq.com/miniprogram/de......
  • P5531 [CCO2019] Human Error 题解
    可能是一个比较劣的做法。但复杂度是对的。思路我们容易发现状态数非常的稀少。一个比较宽松的上限时\(3^{13}\)种状态由于每个点每走一步会吃掉一个棋子。所以实际的状态是远远达不到这个上限。那么我们可以直接设\(dp_{i,0/1,0/1}\)为在\(i\)状态下,目前是Justin......
  • Codeforces Global Round 12 C2. Errich-Tac-Toe (Hard Version) 题解 构造
    Errich-Tac-Toe(HardVersion)题目描述TheonlydifferencebetweentheeasyandhardversionsisthattokensoftypeOdonotappearintheinputoftheeasyversion.ErrichtogaveMonogonthefollowingchallengeinordertointimidatehimfromtakingh......
  • 蓝桥楼赛第30期-Python-第二天赛题 题解
    楼赛第30期Python模块大比拼解析网页元素目标本次挑战,我们需要使用Python访问软科世界大学排行榜来获取首页30所学校的信息。为避免目标网站的内容发生变化,我们使用保存之后的网页进行实验。链接如下:https://labfile.oss.aliyuncs.com/courses/4070/rank2021.h......
  • 优美子序列 题解
    有n个整数从左往右排成一行,构成一个序列a。如果通过删除原序列的若干个数(可以是删除0个),其他数保持位置不动,那么得到的序列就称为“子序列”。记sum表示序列a的所有数的总和,即sum=a[1]+a[2]+a[3]+...+a[n]。如果一个“子序列”的各个数加起来的和等于sum-1,那么这个“子序列”......
  • 题解:聪聪与可可(概率与期望)
    [NOI2005]聪聪与可可题目描述在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小老鼠可可。虽然灰姑娘非常喜欢她们俩,但是,聪聪终究是一只猫,而可可终究是一只老鼠,同样不变的是,聪聪成天想着要吃掉可可。一天,聪聪意外得到了一台非常有用的机器,据说是叫GPS,对可可能准确的定位......
  • [Usaco2017 Open]Bovine Genomics 题解^&*^(
    不知道为啥,我死活想不到二分(楼下正解)所以,就有了这篇题解可以看到,这道题离暴力的距离只有一步!就是数组开不下!!小问答:数组开不下时,你会?A:mapB:优化代码C:gp_hash_table由于正在学hash,所以容易想到...tong[本来的下标%9999999]然后就玄学的过了。。。ACcode#include<bi......
  • 【转载】2024年度山东省自然科学基金项目(第一批)申报常见问题解答
    地址:https://mp.weixin.qq.com/s?__biz=Mzg2NDU5NjA1OQ==&mid=2247579452&idx=2&sn=a038e35fb2958666ab255993008c8064&chksm=ce650e08f912871e77d05569567a15fdffcbedd6a1762a19433b4aabcdcbdf96272d52e28112&mpshare=1&scene=23&srcid=0523SHJ0......