BJOI2019做题笔记
奥术神杖(分数规划、AC自动机)
发现我们要求的东西很像一个平均数(实际上就是几何平均数),那么我们现在考虑一种运算,使得乘法能够变成加法、开根可以变成除法,不难想到取对数满足这个条件。我们对\(\sqrt[v]{\prod a_i}\)取\(ln\)之后得到\(\frac{1}{v} \sum ln\ a_i\),那么我们现在需要它最大。
这显然是一个分数规划,二分之后考虑check。发现check类似于字符串匹配,在AC自动机上DP求解即可。复杂度\(O(nslog\frac{ln 10^9}{eps})\)
注意一个细节。输出方案的时候可能存在:模板串当前位置为'.'时有多种方案满足最优解,但是当前位置字符确定。在输出的时候需要额外的判断。
勘破神机(递推、二项式定理)
强行二合一最为致命……
\(f_i\)是\(f_0 = f_1 = 1\)的斐波那契数列,设\(g_i\)表示\(3 \times 2i\)的棋盘的方案数,可以得到\(g_i\)的递推式为\(g_i = 2\sum\limits_{j=0}^{i-1} g_j + g_{i-1}\),即\(g_i = 4g_{i-1} - g_{i-2},g_0 = 1 , g_1 = 3\)。
\(f_i\)的通项公式为\(\frac{1}{\sqrt{5}} ((\frac{1 + \sqrt{5}}{2})^{i+1} - (\frac{1 - \sqrt{5}}{2})^{i+1})\),\(g_i\)大力解一下特征方程或者丢到OEIS上找一下可以得到通项公式\(g_i = \frac{\sqrt{3}}{6} ((1 + \sqrt{3})(2 + \sqrt{3}) ^ i - (1 - \sqrt{3})(2 - \sqrt{3})^i)\)。
然后因为\(\binom{x}{k} = \frac{x^{\underline{k}}}{k!}\)是一个多项式,把多项式的系数求出来问题就等价于求\(\sum\limits_{i=l}^r f_i^k\)和\(\sum\limits_{i=l}^r g_i^k\),方法跟这里的一样。
关于特征方程一篇还不错的Blog
送别(???)
不会留坑
排兵布阵(背包)
BJOI出PJ题……
考虑暴力DP:设\(f_{i,j}\)表示考虑前\(i\)个城市共用\(j\)个士兵的最大分数,然后不难发现每一个城市中的驻扎人数在恰好为\(2x+1\)时才有可能达到最优,其中\(x\)是第\(i\)个城市的其中一个人的驻扎兵力,那么有效的驻扎兵力数只有\(S\)个,\(O(NMS)\)地DP即可。
光线(???)
考虑将两个玻璃合并。那么枚举在两块玻璃之间反射了多少次,就是一个无穷等比数列求和。
不难得到光线从\((a_i , b_i)\)和\((a_j , b_j)(j=i+1)\)两块玻璃之间穿过的概率是\(a_ia_j \frac{1}{1-b_ib_j}\),从\(j\)层穿入、再从\(j\)层穿出或者从\(j\)层反射的概率是\(b_j + a_j^2b_i \frac{1}{1-b_ib_j}\),这就是将两个玻璃合并之后从下表面反射的概率,从上表面反射的概率同理。那么我们就可以把两个玻璃合并起来。从上往下依次合并,就可以避免记录从上表面反射的概率。
删数(线段树)
一个很巧妙的转化:考虑序列中的一个数\(x(x \leq N)\)如果它出现了\(p\)次,则覆盖区间\([x-p+1,x]\),那么答案相当于求\([1,N]\)内没有被覆盖的整点个数。
那么我们需要动态维护这个东西,支持单点修改、区间平移,直接用线段树维护。值得注意的一点是:当\(x>N\)的时候不能够产生贡献,区间平移的时候需要注意这一点。
BJOI2019做题笔记的更多相关文章
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- SDOI2017 R1做题笔记
SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30
- SDOI2014 R1做题笔记
SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- LCT做题笔记
最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...
- java做题笔记
java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...
- SAM 做题笔记(各种技巧,持续更新,SA)
SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...
- PKUWC/SC 做题笔记
去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...
随机推荐
- javascript小实例,拖拽应用(一)
前面我们将了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图: 就是这样一个简单的一个拖拽条,你可以把它理解为滚 ...
- .NET: 谈谈C#中的扩展方法
扩展方法(Extension Methods)是C#3.0时引入的新特性,相信很多人都听过并且也都用过,最常见的是在LINQ中的使用. 不仅如此,在开发中,我们也可以创建自己扩展方法,使用它来优化类的 ...
- wpf,visibility属性的多元素绑定及值转换
visibility实现多元素绑定. 实现多绑定转换 public class VisibilityConverter : IMultiValueConverter { public object C ...
- python学习笔记(六)、类
Python与java.c++等都被视为一种面向对象的语言.通过创建自定义类,用于处理各种业务逻辑.面向对象有封装.继承.多态三个特征,这也是面子对象语言的通用特征. 1 封装 封装,是值向外部隐藏内 ...
- 【学习笔记】tensorflow基础
目录 认识Tensorflow Tensorflow特点 下载以及安装 Tensorflow初体验 Tensorflow进阶 图 op 会话 Feed操作 张量 变量 可视化学习Tensorboard ...
- 4-4 Redis 的常用配置
2016-12-22 15:30:43 本篇文章属于Redis 系列第四篇文章:Redis 配置文件介绍 该系列文章链接 NoSQL 数据库简介 Redis的安装及及一些杂项基础知识 Redis 的常 ...
- 浏览器与Node的事件循环(Event Loop)有何区别?
前言 本文我们将会介绍 JS 实现异步的原理,并且了解了在浏览器和 Node 中 Event Loop 其实是不相同的. 一.线程与进程 1. 概念 我们经常说 JS 是单线程执行的,指的是一个进程里 ...
- LayoutInflater.inflate()方法两个参数和三个参数
转载请标明出处:https://www.cnblogs.com/tangZH/p/7074853.html 很多人都用过LayoutInflater(布局填充器) 对于我来说通常使用下面两种:Lay ...
- Android 使用Picasso加载网络图片等比例缩放
在做android图片加载的时候,由于手机屏幕受限,很多大图加载过来的时候,我们要求等比例缩放,比如按照固定的宽度,等比例缩放高度,使得图片的尺寸比例得到相应的缩放,但图片没有变形.显然按照andro ...
- Linux简单配置SendMail发送邮件
本文简单整理了一下如何在Linux服务器上安装.配置SendMail发送邮件的步骤,此文不是配置邮件服务器,具体测试环境为CentOS Linux release 7.2.1511 (Core) ,如 ...