P4528 做题笔记

news/2024/11/6 13:34:39/文章来源:https://www.cnblogs.com/CEFqwq/p/18529982

神题。

\(f_{a,b,c,d}\) 表示四个数排名依次为 \(a,b,c,d\) 的子序列的方案数(最小的排名为 \(1\),以此类推)。

闪电图腾就是 \(f_{1,3,2,4}\),山峰图腾 A 为 \(f_{1,2,4,3}\),B 为 \(f_{1,4,3,2}\)

我们所求的式子是 \(f_{1,3,2,4}-f_{1,2,4,3}-f_{1,4,3,2}\)

\(=(f_{1,x,2,x}-f_{1,4,2,3})-(f_{1,2,x,x} - f_{1,2,3,4})-(f_{1,4,x,x}-f_{1,4,2,3})\)。这里的 \(x\) 表示子序列中这个数排名无限制。

可以化简得到 \(f_{1,x,2,x}-f_{1,2,x,x}+f_{1,2,3,4}-f_{1,4,x,x}\)

进一步得到 \(f_{1,x,2,x}-f_{1,x,x,x}+f_{1,3,x,x}+f_{1,2,3,4}\)

然后我们考虑如何求这四个值。

我们定义 \(L(i)\)\(R(i)\)\(L(i)\) 表示下标小于 \(i\) 的数中,\(y\) 值小于 \(i\) 的数个数;\(R(i)\) 表示下标大于 \(i\) 的数中,\(y\) 值小于 \(i\) 的数的个数。

显然可以通过树状数组来求出 \(L(i)\),然后我们思考 \(R(i)\) 等于什么。考虑到 \(y\) 是一个排列,也就是说整个数组中 \(y_j < y_i\)\(j\) 一共有 \(y_i-1\) 个,也就是说,\(L(i)+R(i)=y_i-1\)。所以我们可以通过 \(L(i)\)\(y_i\) 推得 \(R(i)\)

有了 \(L(i)\)\(R(i)\),考虑怎么求上面四个 \(f\) 值:
简单题,但是非常巧妙。

\(f_{1,x,x,x}\) 是容易的。扫到 \(i\) 的时候,剩下三个数只要比 \(y_i\) 大即可。而下标大于 \(i\) 的数中,比 \(y_i\) 大的数有 \(n-i-R(i)\) 个,求组合数得到对于每个 \(i\) 答案为 \(C_{n-i-R(i)}^{3}\)

然后求 \(f_{1,x,2,x}\)。我们不妨枚举每个 \(2\) 的位置,那么右边的贡献显然是 \(n-i-R(i)\),而左边有一定难度。

注意到如果仅仅考虑排名为 \(1\) 的那个数,方案数为 \((i-1)L(i)\)。这样子多算了两种情况:

  1. 排名为 \(1\) 的数在另外一个数右边或者重合。方案数为所有下标小于 \(i\)\(y\) 值小于 \(y_i\) 的数的编号和,因为只要另外一个数不在排名为 \(1\) 的数右边就不合法。可以树状数组维护。

  2. 另外一个数比 \(y_i\) 小。方案数为 \(C_{L(i)}^{2}\)

减去即可。

接下来求 \(f_{1,3,x,x}\)。不妨枚举 \(3\),排名为 \(4\) 的数显然有 \(n-i-R(i)\) 中选法。只考虑排名为 \(1\) 的数,显然有 \(L(i)(y_i-1)\) 种选法,需要减去两种情况:

  1. 选择的排名为 \(2\) 的数在 \(3\) 左边,不能接受。方案数为 \(C_{L(i)}^2\)

  2. 选择的排名为 \(2\) 的数比排名为 \(1\) 的数小,不能接受。方案数为所有下标比 \(i\) 小且 \(y\) 值比 \(y_i\) 小的数的 \(y\) 值和。用树状数组。

最后求 \(f_{1,2,3,4}\)。依然枚举 \(3\)。排名为 \(4\) 的数有 \(n-i-R(i)\) 种选法,每个下标小于 \(i\)\(y\) 值小于 \(i\) 的数都可以作为 \(2\),假设下标为 \(j\),排名为 \(1\) 的数就有 \(L(j)\) 种选法。开树状数组统计即可。

至此,你已经秒掉了这道题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827625.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IBM SPSS Amos 28下载与安装教程

1、安装包Amos28: 链接:https://pan.quark.cn/s/0f9dcffd2b38 提取码:Z18Q 2、安装教程 1) 双击安装,弹窗安装对话框2) 点击下一步,选择I accept ,点击Next3) 选择安装路径,建议安装C盘之外,选择完,点击Next4) 点击Install 开始安装5) …

Meta AR 眼镜团队前负责人加入 OpenAI;visionOS 2.2 Beta 引入超宽屏投屏模式丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement)领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的数据」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑的…

newstarctf WP存档

Week 1 Pwn Real Login Game Overwrite Gdb Reverse Web Crypto Misc Week 2 Pwn Reverse Web Crypto Misc Week 3 Pwn 不思議なscanf One Last B1te ezcanary Easy_Shellcode Reverse 011vm simpleAndroid SMc_math flowering_shrubs SecertsOfKawaii PangBai 过家家(3) 取啥…

Ollama AI 框架缺陷可能导致 DoS、模型盗窃和中毒

近日,东方联盟网络安全研究人员披露了 Ollama 人工智能 (AI) 框架中的六个安全漏洞,恶意行为者可能会利用这些漏洞执行各种操作,包括拒绝服务、模型中毒和模型盗窃。知名网络安全专家、东方联盟创始人郭盛华表示:“总的来说,这些漏洞可能允许攻击者通过单个 HTTP 请求执行…

还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!

还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!前言 程序员的终极追求是什么?当系统流量大增,用户体验却丝滑依旧?没错!然而,在大量文件传输、数据传递的场景中,传统的“数据搬运”却拖慢了性能。为了解决这一痛点,Linux 推出了 零拷贝 技术,让数据高效传输几乎无需…

【日记】碰到了一个洗钱嫌疑很高的客户(755 字)

正文早上有个客户来开户,总感觉他洗钱的嫌疑很高。1. 没有财务章,甚至没有财务职位,会计工作是找的代理记账公司;2. 客户经理尽职调查时,注册地和实际经营地址不一致,3. 开企业网银觉得还不够,说外勤多,要开手机网银;4. 觉得每天 20 笔,总额 100 万的限额有些低;5. …

C++ 逆向之 forward 函数与完美转发

在进行 std::forward 函数的讲解之前,需要知道 std::move 的运行原理,还不是很清楚的朋友建议先看一下前置知识,本次内容是基于 std::move 内容的基础上进行讲解: C++ 逆向之 move 函数 然后来讲解我们今天的主角:std::forward 函数与完美转发。 一、std::forward 函数的作…

中电金信:企业数据赋能效果差,科学试错体系了解一下?

​ Wuhu,咨询专题第五期内容来啦~ 继先后讲解了企业数字化转型 过程中的价值创造、运营变革 以及平台化建设等难题如何解决后本期我们一起来关注 企业科学试错体系构建事情是这样的 👇 👇 👇 随着金融数字化转型的深入推进,以大数据为基础的智能化应用大量涌现,使得数…

【华为笔试-3】HJ20 密码验证合格程序

【华为笔试-3】HJ20 密码验证合格程序HJ20 密码验证程序输入: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000输出: OK NG NG OK注:输入结束后有中止结束标志EOF【这个原题给的时候无说明,自己跑他的用例和看论坛看出来的】题解: 要点有三个,分别是:长度超过八位、包含三…

记Linux使用异常2

麒麟v10系统开机后提示如下信息,并进入initramfs模式,[0.224166][ 0l dmi: Firmware registration failed, [0.936010][ 0] serial8250 serial8250.0: unable to register port at index 1 (IOFFFFF10204000000 MEM0 IRQ0): -22 [1.829735][ 0] i8042: i8042 controller self…

SVN集成ExcelMerge

在SVN中对比表格差异时,如果只是一个sheet的CSV表格,SVN自带的diff效果也很好,如果是多个Sheet的xlsx表格,,SVN自带的diff效果就很差 ExcelMerge是一个在Windows平台下比对Excel的工具,当Excel存在多个Sheet时也能很好的支持差异的比对,配合上svn可以很好的查看策划的数…

homeassistant docker搭建并接入米家设备

homeassistant docker搭建教程: 下载镜像 docker pull homeassistant/home-assistant:latest 找个顺眼的地方建立目录,如/etc/dockerdata/homeassistant创建容器 mkdir /etc/dockerdata mkdir /etc/dockerdata/homeassistant然后执行命令: docker run -d \--name homeassist…