csp-s模拟测试69

A. chess

看到范围一开始猜是矩阵快速幂,开始推按列转移的dp,正方形之间有交集不好转移。

换了个角度,都恰好有c个,那么我在滑动正方形的时候损失几个就要获得几个,然后就看出了列之间的相等关系。

推了个$\Theta(n^4logm)$的dp。码完测了下n=50都T飞,怀疑人生10min,发现k没限制n打成了$\Theta(n^5logm)$

改完发现100依然T飞,然后慌了(因为懊悔T3是原题但我没学回滚莫队...),忘记当时为什么以为log提不出来了orz。

打完dp,观察复杂度瓶颈,首先考虑优化而不是换思路。

预处理快速幂,2s 1e8可过。

B. array

看错题了,以为是大水题。

倒序扫描,用单调递减栈维护右端点(如果有i破坏单调性,那么由于i的存在,被pop的元素不可能再成为右端点),考虑如何快速得到最左合法左端点。

维护pos[],mn[],表示单调栈中相邻元素在序列上下标的左闭右开区间中的合法左端点位置及值(即mn<=区间中pos右边的所有数)。

在弹栈的过程中取最小mn[]才能更新答案。分类讨论维护pos[i]和mn[i]。

C. ants

一眼permu,上来直接打,算复杂度忘算logn。$\Theta(n\sqrt{n}logn)$

码完测10wT飞,极限6w。发现5e8 3s肝不过,又想起permu非权值线段树打法,wsl。

正解:回滚莫队

发现答案的更新来自与边缘的合并,所以只要维护L[i]表示<=i的最长连续值域长度,R[]同理。

每次更新的时候更新答案、维护边缘的信息。

1             L[a[r]]=L[a[r]-1]+1;
2             R[a[r]]=R[a[r]+1]+1;
3             int tmp=L[a[r]]+R[a[r]]-1;
4             mxr=max(mxr,tmp);
5             L[a[r]+R[a[r]]-1]=tmp;
6             R[a[r]-L[a[r]]+1]=tmp;

以上“加”的操作是$\Theta(1)$的,然而无法随意撤回。

类似Dash Speed,如果我们能保证一个有序的撤回的“深度”合法的处理顺序,那么就可以用栈记录并暴力撤回。

同样的排序(不能奇偶优化)。

对于每个询问,右端点递增,不需要撤回。处理并记录左端点在块内的操作,更新答案然后撤回,块长是$\sqrt{n}$,所以撤销的复杂度为$\Theta(q \sqrt{n})$

原文地址:https://www.cnblogs.com/hzoi-yzh/p/11660699.html

时间: 2024-07-30 09:48:17

csp-s模拟测试69的相关文章

CSP-S模拟测试69 题解

一如既往的垃圾,又回到了那个场场垫底的自己,明明考场上都想到正解了,但是就是拿不到分,可能是互奶把rp用光了吧以后一定加强训练代码能力. T1: 考场上一直yy矩阵快速幂,虽然自己矩阵快速幂一点都不会还是硬着头皮yy,发现不可做之后并没有及时转化思路,但其实自己预处理的数组就是正解. 切记:不仅矩阵快速幂是log的,普通快速幂也是2333 然后这题其实很水啊,我们设$dp[i][j]$为前$i$列放$j$个棋子的方案数,然后枚举最后一列放多少个棋子就好了. 转移方程为$dp[i][j]=\sum

[考试反思]1011csp-s模拟测试69:无常

承蒙大脸skyh的毒奶,加之以被kx和Parisb以及板儿逼剥夺了一中午的睡眠(其实还有半个晚上)RP守恒终于失效了,连续两场没考好 RP也是不够了,竟然考原题,而且还不换题,连样例都一模一样只不过加强了数据范围 关键是当时没有几个人学了回滚莫队,学长也没讲我就没学... 后悔...但的确就是不会,能有什么办法呢? 话说回滚莫队真的是联赛知识点吗?那我真的是太菜了... T1比较简单.至少我比较擅长.因为实在是困所以弄了半天没用的东西,用了40分钟才A(居然是首杀???) 然后继续懵逼,困的不行

模拟测试68,69

68: 32 AlpaCa 41 03:08:20 31 02:46:16 30 02:46:28 102 03:08:20 69: 28 AlpaCa 20 02:51:15 60 03:05:32 0 01:39:45 80 03:05:32 彻底挂掉了呢. 不过也还好吧,至少之后的考试不会有那么大压力了吧(出第一机房是肯定的事了),那利用之后几场考试就调整好状态,下次再来嘛. 但是最近炸了那么多场还是要反思一下,其实不只是心态的问题,自身实力,考试技巧,时间分配等方面好像都有点问题. 69

微信在线信息模拟测试工具(基于Senparc.Weixin.MP)

目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具在线DEMO:http://weixin.senparc.com/SimulateTool Senparc.Weixin.MP是一个开源的微信SDK项目,地址:https://github.com/JeffreySu/WeiXinMPSDK (其中https://github.com/Jeffrey

noip模拟测试11

T1:string 第一眼秒出思路,这不就是排序那道题的加强版吗? 然而歪?解复杂度虽然是对的,但常数过大,竟被卡到70 歪?解:(实际上std写的就是这个,但据说std被卡掉了 OAO) 因为字符集很小,所以我们可以把区间排序改为区间查询和覆盖 即:先查询区间内所有字符的个数,再从左端点开始按照大小关系依次将长度为字符个数的区间修改为该字符. 期望复杂度O ( 26*mlogn ),实际复杂度O ( 26*mlogn*(巨大的常数) ) 所以需要一(feng)定(kuang)的卡常 正?解:

[考试反思]0929csp-s模拟测试55:沦陷

菜得过分. 面对T1的大板子不知所措,然后T2的贪心不小心把排序语句删了... T1这种大模板啊...其实我是觉得我能打出来的,然后先用一个小时码了一个2k. 然后做T2想贪心就出来了.十分钟码完T3暴力之后回T1打对拍瞬间爆炸. 于是又重新打了一个2k,WA0.对拍发现. 然后考试就没几分钟了交暴力走了. 不要打完就跑,记得早点对拍改进思路. T1: 的确是挺裸的线段树.离散化或者权值线段树都可以. 但是考场上两个都打出来都死了. 最后用离散化A的. 1 #include<cstdio> 2

模拟测试(vj)

做这份模拟测试,已经崩溃了,英文看不懂,题意理解错.到结束了只a了第一题,人生陷入了低谷,于是花了一天的时间终于把不会的弄明白了,在这里写一份总结~ T1,简单的模拟,如果打枪打中一支鸟,将这个位置设为0,并向两边扩散,注意这个位置一定要有鸟. 代码~ #include<bits/stdc++.h> using namespace std; int a[30000]; int n,m; int main() { cin>>n; for(int i=1;i<=n;i++) ci

Android单元测试与模拟测试详解

测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabricator differential 发diff时提交需要执行的单元测试,在开发流程上就可以保证远端代码的稳定性). 2. 测什么? 一般单元测试: 列出想要测试覆盖的异常情况,进行验证. 性能测试. 模拟测试: 根据需求,测试用户真正在使用过程中,界面的反馈与显示以及一些依赖系统架构的组件的应用测

css Hack,用IE11模拟测试的,条件注释要找真IE去测,模拟的无效

<!DOCTYPE html> <!--[if lt IE 7 ]> <html class="ie6 ie"> <![endif]--> <!--[if IE 7 ]> <html class="ie7 ie"> <![endif]--> <!--[if IE 8 ]> <html class="ie8 ie"> <![endif]