csps51(a)
T1的暴力死掉了。。。。。。
T3大众分。。。。。。
T2打了几个小表,发现了一些规律,成功yy出了$O(nlogalogn)$的暴力,拿到了73pts,弥补了爆炸的T1。
T1.
考场上看了看,遥远的国度。由于我没做过,感觉硬刚可能GG,于是先放了。
然而最后打了40pts暴力爆零了。。。。
正解其实很简单,考虑当前根与原根的关系,讨论一下就好了。
T2.
由于两个log,50w的数据范围,很大的优化空间,我果断地走向了暴力的道路。
这题如果强制在线,我的方法应该就是正解了。
思想很简单,我并没有转化题意,所以从一个完全不同的角度去考虑:
某一个数,除非它是目前最小的,那么它必然在某一时刻会被$f[x-1][y-1]$更新,并且从此之后一直被它更新。
那么,我们可以发现,这两项的差成为了定值,为$a[y]$。
而在它被上一列更新之前,就会一直被自己的前一项更新,以等差数列的形式增长。
那么我们要求某一项$f[x][y]$值的时候,就可以一直去找它的$f[x-1][y-1]$项,直到这一项已经是等差数列的形式,然后求出当前项,递推回去即可。
我们考虑如何确定当前项已经是等差数列。显然我们可以预处理出来,对于每个$a[y]$,它到第几项不再是等差数列。(l[x])
我们考虑怎么预处理。二分答案,对于每一个二分的值,我们假设当前仍然是等差数列,比较它与$f[x-1][y-1]+a[y]$的大小,若小于,说明当前项由上一列更新更优,不再是等差数列。
下一个问题是,如何求出$f[x-1][y-1]$的值。由于之前的数我们已经将它何时不再成为等差数列处理了出来,所以我们需要找到第一个成为等差数列的位置。
继续二分答案,查询区间中最大的$l[x]$是否能被这个数利用。
我们可以用ST表来实现$O(1)$查询,每次求出一个$l[x]$,在ST表末尾加入它即可。
询问直接调用之前的求值函数即可。
代码实现很简单,而且这大概是在线的唯一做法了。
理论复杂度爆了,所以加了一些减枝,卡了卡常,A掉了。
正解是将所有操作离线,维护一个下凸包,在凸包上三分。
也许可以算自己A掉的A组题?
T3.
母函数,NTT。
csps51(a)的更多相关文章
随机推荐
- git checkout 提示 “error: The following untracked working tree files would be overwritten by checkout” 解决
问题描述 Windows 或者 macOS 操作系统中,文件名是不区分大小写的.对于已经提交到仓库中的文件修改文件名的大小写,然后又用 git rm 命令将老文件从 Git 仓库删除掉,并保存下新的文 ...
- [开源]如何使用goapp写你的后台管理系统_golang
简析 基于 Gin + GORM + Casbin + vue-element-admin 实现的权限管理系统. 基于Casbin 实现RBAC权限管理. 前端实现: vue-element-admi ...
- 【JZOJ5264】化学
Description Input Output Sample Input 3 10 1 2 10 Sample Output 5 Hint 题解: 这个题目通过30%部分分的提示,我们可以猜出这 ...
- springboot redis-cache 自动刷新缓存
这篇文章是对上一篇 spring-data-redis-cache 的使用 的一个补充,上文说到 spring-data-redis-cache 虽然比较强悍,但还是有些不足的,它是一个通用的解决方案 ...
- 数据结构(java)
数据结构1.什么是数据结构?数据结构有哪些? 数据结构是指数据在内存中存放的机制. 不同的数据结构在数据的查询,增删该的情况下性能是不一样的. 数据结构是可以模拟业务场景. 常见的数据结构有:栈,队列 ...
- js继承机制的实现
js继承机制的实现 1. 继承的概念 说明继承的最经典的例子:几何形状.实际上,几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形.矩形和五边形 ...
- 机器学习回顾篇(7):决策树算法(ID3、C4.5)
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 白话系列之实现自己简单的mvc式webapi框架
前言:此文为极简mvc式的api框架,只当做入门api的解析方式,并且这里也不算是mvc框架,因为没有view层,毕竟现在大部分都属于前后端分离,当然也可以提供view层,因为只是将view当做文本返 ...
- window 下Notepad++设置为文本文件的默认打开程序失败
1.右键Notepad++的可执行程序,选择"属性" -- "兼容性" , 设置Notepad++以管理员的身份运行 2.打开Notepad++ ," ...
- [JZOJ5185] 【NOIP2017提高组模拟6.30】tty's sequence
Description