新建这篇博客的时候发现自己在NOI之后只发过两三篇博客,而且都基本上没什么实质性内容。
果然是巨大混混人啊。
本文承接上篇(不过好像烂尾了),旨在记录一些有趣(?)的内容。

12.23

北大集训过去好些天了。
对退役这件事情几乎无感,IOI也并非自己所坚信的道路。
但这也只是逃避的说辞罢了。
不过有一说一,退役二字本身还是很让人沮丧的。至少不能够把这种挫败感带到机房传染给学弟们。

以后还是会做点题什么的,毕竟在近一两年里总还是会被打上,或者说需要依赖于这引以为傲的OIer标签的。
当然也会有些别的计划,在此就不多提及了。


下午补了USACO的题。T3那个数数题在北大集训前鼠就跟我讲过但好像当时......根本没有脑子?

「USACO 2019.12 Platinum」Greedy Pie Eaters

首先可以认为每个区间都对应一头牛(若不存在可以认为牛的体重为\(0\)),记\(A_{l,r}\)表示区间\([l,r]\)对应的牛的体重,显然最终会选出恰好\(n\)头牛,每头牛吃恰好一个派。
考虑区间dp。枚举区间\([l,r]\),并枚举区间内最后一个被吃掉的派\(k\)。
\(f_{l,r}=\max_{l \le k \le r}\{f_{l,k-1}+f_{k+1,r}+g_{l,k,r}\}\),其中\(g_{l,k,r}=\max_{l \le x \le k \le y \le r}A_{x,y}\)。
\(g\)可以和\(f\)一起算,即\(g_{l,k,r}=\max\{g_{l+1,k,r},g_{l,k,r-1},A_{l,r}\}\),可以把其中一维用滚动数组优化掉。
code

「USACO 2019.12 Platinum」Bessie's Snow Cow

直接用\(\text{std::set}\)维护每种颜色的子树并,再安排个树状数组支持区间加区间求和就完事了!!1
code

「USACO 2019.12 Platinum」Tree Depth

一件(众所周知的)事情是设\(f_{n,k}\)表示逆序对数为\(k\)的\(n\)阶排列的数量,那么其生成函数\(F_n(x)=\sum_{k\ge 0}f_{n,k}x^k\)满足

\[F_n(x)=\prod_{i=0}^{n-1}\sum_{j=0}^{i}x^j=\prod_{i=1}^{n}\frac{1-x^i}{1-x}\]

大致含义是考虑排列的生成方式,每次在一个\(i\)阶排列的末尾添加一个新的数字,根据新添加的数字与原数的大小关系可以得到逆序对数的增量。

另一件(众所周知的)事情是在考虑排列中某个位置在对应的笛卡尔树上的期望深度时,常常根据期望的线性性,转化成考虑其余每个位置在笛卡尔树上作为这个位置的祖先的概率。具体的,一个\(n\)阶排列中,\(i\)作为\(j\)在笛卡尔树上的祖先的充要条件为:\(p_i\)是区间\([i,j]\)(或区间\([j,i]\))中的最小值,而这个概率显然是\(\frac{1}{|i-j|+1}\)。

回到原问题。考虑枚举\(i,j\),计算有多少逆序对数为\(k\)的排列满足\(i\)是\(j\)在笛卡尔树上的祖先。相当于是在插入\(i\)位置时强制其为当前最小,也即对于上述的生成函数\(F_n(x)\),把\(\prod\)中\(\sum_{k=0}^{|i-j|}x^k\)项改为\(1\)或者\(x^{|i-j|}\)(根据\(i,j\)的大小关系,会发现当\(i<j\)时插入\(i\)不会贡献逆序对,\(i>j\)会贡献恰好\(i-j\)个逆序对)。

只需要计算出\(F_n(x)\),然后每次除掉一个\(\frac{1-x^i}{1-x}\)即可。

code


晚上口胡了下PKUWC。jlsnb!

RE:ゼロから始める AFO 生活的更多相关文章

  1. CSP2019-终章:afo生活的开始

    出分了...退役了...449...afo了... 曾经立志不少于500的我...竟然450都没上... Orz初中的神仙学弟考了596... 接下来,是一种生活的结束,也是另一种生活的开始... 我 ...

  2. RE:ゼロから始める文化課生活

    觉得有必要在NOI之前开一篇学习内容记录. 至于为什么要取这个标题呢?也许并没有什么特殊的借口吧. 5.23 在LOJ上搬了三道原题给大家考了考,然后大家都在考试就我一个人在划水. SSerxhs 和 ...

  3. 关于我的OI生涯(AFO){NOIP2016 后}

    这篇我就随意写啦~不用统一的“题解”形式.♪(^∀^●)ノ 也分好几次慢慢更吧~ 对于NOIP2016的总结,我本想善始善终back回,但是心情不足以支撑我,那就只能有始有终了......下面进入我的 ...

  4. IT男的”幸福”生活"续6

    新的一年飘了一下,就过来了. 在过去的一年,大家都找到了自已的幸福吗? 时间在继续,人生得幸福.. 看了前面大家的回复,感觉挺开心的.像我们code Man,不可能总是coding.总得要一些生活调味 ...

  5. xml在此生活

    小编尾随学习的步伐.今天小编简要概述xml在此生活,xml她的百度百科这一解释:可扩展标记语言 (ExtensibleMarkup Language, XML).用于标记电子文件使其具有结构性的标记语 ...

  6. 开展project 正常的生活之路

    相对刚走出学校的学生在其他行业工作,竞争力的薪酬,同时.并不断地不仅学习更新专业知识让你感到生活的充实,更满足了你那不让外人知的虚荣心.在刚出校门的几年中,你常常回头看看被你落在后面的同学们,在内心怜 ...

  7. 成也DP,败也DP(AFO?)

    不知道想说什么.. 从来没写过博客,markdown什么的也不会,凑合着看一下吧. 初中的时候开始搞OI,学了两个月后普及组爆零就退赛了. 初三直升的时候说每个人都要选竞赛,抱着混一混的心态选了信息, ...

  8. 茶馆小人书 (AFO)

    茶馆小人书 ——AFO ​ 乌云重重地压住了整个天际,阴风凛冽袭人,随着远方穹顶上的几声闷响,豆大的雨点便开始清洗这座城市.北方的雨,就是这么突然.任性,恰似北方人的性情,豪放不羁,一旦开始便不可收拾 ...

  9. Geek地生活,文艺地思考

    本文纯属整理自己零碎杂乱的思绪,和题目无关.           不知觉间,大学已经两年过去了,忙忙碌碌了两年,大一那年參加了学生会编 辑部和艺术团舞蹈队,课余时间的生活总是被舞蹈队排练.參演和编辑部 ...

随机推荐

  1. PorterDuffXfermode之PorterDuff.Mode.MULTIPLY

    package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...

  2. python读取csv文件、excel文件并封装成dict类型的list,直接看代码

    # coding=UTF-8import csvimport xlrd class ReaderFile(): """ 读取csv文件 filePath:文件路径 &qu ...

  3. MS SQL查询所有表行数,获取所有数据库名,表名,字段名

    1.获取所有数据库名 --SELECT Name FROM Master..SysDatabases ORDER BY Name -- 2.获取所有表名: --SELECT Name NAMEtemp ...

  4. 【c# 学习笔记】索引器

    当一个类包含数组成员时,索引器 的使用将大大地简化对类中数组成员的访问.索引器的定义类似于属性,也具有GET访问器和set访问器,如下: [修饰符] 数据类型 this[索引类型 index] { g ...

  5. Demo客户端相关规范 v1.0

    目录 开发环境 开发工具 代码管理 项目代码 分支管理 名称管理 打包管理 存储路径 存储结构 测试包 正式包 名称管理 依赖组件 内部组件 外部组件 解决方案结构 解决方案命名 解决方案文件夹 项目 ...

  6. golang 日志模块(log)

    log 日志 log 模块可以自定义log 对象, 也可以使用log默认对象的日志方法 func New 创建log对象 func New(out io.Writer, prefix string, ...

  7. eclipse 解决POM文件错误:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

    解决方案: 更新eclipse中的maven插件 1.1 Help -> Install New Software -> Add 1.2 Location中输入 http://repo1. ...

  8. selenium3 web自动化测试框架 四:Unittest介绍及项目实战中的运用

    unittest介绍及运用,可以参考之前写的文章,除了未结合web自动化演示,基础知识都有了 https://www.cnblogs.com/wuzhiming/p/8858305.html unit ...

  9. Arduino图形化编程软件ArduBlock的安装过程

    ArduBlock是一款图形编程插件,接下来我们在Windows10上进行安装 注意ArduBlock虽然能安装在1.83版本的Ardunio上,但在载入程序时会报错,用本身的IDE不会出现这种情况. ...

  10. 前端接收 post 请求返回的文件

    坐标过多无法用Get请求,只能用post下载. 但发现ajax发送的post请求没有触发下载,返回的流媒体会存在于接口返回的response中. 查询发现AJAX并不会唤起浏览器的下载窗口,AJAX设 ...