2018/3/13

  没有题解的考试

  标程1k我却只能改5k+的改法

T1 simple

  我好像遇到最长上升子序列的题就做不出来,上回在成都就是一道非常显然的上升子序列的部分分,然而我就是没有看出来,这次又是,开始一个小时,根本没有什么正经的思路,一直在搞什么逆序对,发现了一堆奇奇怪怪的性质,但是没什么卵用,直到我把别的题的暴力都敲完了,回来一看,才猛然发现链的情况是最长上升子序列,并且可以拓展到树上进行DP,然后搞到了40分,然后链的情况我还觉得可能是根有两个儿子,就算是这样,也是这敲一下啊,反正又不难打,然后40分的暴力,因为最后离散后没有把权值的最大值给改过来,又丢掉了20分。。。。。 感觉这是考试以来,做得最不爽的一道题

  但是我们的大猩猩现场就A了,他的做法就是把DP的过程优化成在线段树上搞,可以发现,在原来的f数组中,有实际贡献,也就是实际存在的j就是这可子树里存在过的权值,那么我们可以直接对于每一个节点开一个权值线段树,对应的权值就是原来f数组中的值,但是合并儿子的时候,并不能让对应节点简单的相加,因为两个儿子中,不同的j也会有产生更优的贡献,比如说,1号儿子有一个4的小根堆,那么他完全可以直接的加到2号儿子的3的小根堆中,所以我们考虑一个点,会对另一个子树中的哪些点产生贡献,首先,如果j<k并且f[i][j]<f[i][k],那么k就会比j更优,所以j对另一颗子树里的贡献会被j所覆盖,所以在线段树里维护一下然f是单调递减就好了,然后在合并的时候采用启发式合并,把小的线段树直接拍成一个数组,然后就先查一下每一个点在大线段树中的后继,因为这个别的子树中对他的最优贡献(单调性)那么记录一下这个值,这个是这个点被别的子树更新过的结果,然后在对大线段树中他能贡献的点区间加一发,就完成了儿子之间的合并,因为每一个儿子的线段树都是单调的,所以儿子合并之后依然是单调的,然后考虑加入当前的根的贡献,就是从所有儿子合成的大线段树中,查他的后继,然后+1就是这个根的最优贡献,但是由于这个根的+1操作,在把他插入到线段树中的时候,就可能造成线段树的不单调,就不断的查他的前驱,比他小就删掉,这样因为每一个点最多会被删掉一次,所以复杂度也是有保证的,然后这么搞下去就好了。。。。

  然后线段树里查前驱后继的话,如果要查x的后继,就先走到x所在的位置,然后在递归回来的时候,判断右儿子是不是空,回来第一个不是空的右儿子就是后继。

  正解的话就更NB了一些,我们想,如果两棵线段树里存的值不进行区间加,查后继更新这种操作的话,那么一个点的f值实际上就是他所在线段树的后缀和,那我们直接用一个 map 来实现存储每一个点自己不更新的值,然后启发式合并一发,最后遍历一下 map 第一个点的后缀和就是答案了,那么我们考虑一下map中每一个点的值的新含义,实际上就是它所代表的小根堆比他后继所代表的小根堆中的点数多了多少,但是还有一个没有解决的问题就是当把根这个点插入的时候,如何维护单调性,其实跟这个点的值直接++就好了,因为它比他后面的堆中多了一个点,但是这个根所在的点不能对它前面的点做出贡献因为他是堆顶,但是由于我们维护的是一个后缀和,每一个点实际上就是上一个办法中的线段树中的每一个点与相邻点的差分值,所以需要把他的前驱的值-- 来抵消掉它造成的影响,当他的前驱-- 之后变成了0那么就意味着,这个点的前驱所代表的小根堆中的点和这个点的小根堆的点数是一样的,那么前驱就不优了删掉就好了。

T2 trans

  这个题的话,模拟一下就是把每一个区间长度从小到大取max之后形成的新序列,有一个30分的部分分就是先考虑较小的那个数所存在的总区间长度,然后算出他的贡献然后在用大的算整个区间的在减去小,在考虑一下首尾的特殊情况的就好了。。。。 正解也是类似的,就是把所有的点排序之后,从小到大,分为黑白两种点,已插入的是白点,未插入的是黑点,然后在计算贡献的时候,就是这一步所有区间的贡献减去上一回的贡献,这么搞下去,然后也是注意一下不叫恶心的首尾情况。。 区间合并的话可以用链表,也可以用set

T3 mov

  50分的暴力还是很好拿的,正解就是小魔术就用卢卡斯,就是把每一个先有步转换,把(x,y)变成((x+y)/2,(x-y)/2),这样的话原来的移动对应到现在就是(x+1,y),(x,y+1),(x+1,y+1),然后设斜着走i步,A=(n+m)/2,B=(n-m)/2,那么方案数就是C(A+B-i,A)*C(A,i),然后我们就把C上的四个数都变成P进制,然后数位DP,转移求乘积就好了,但是值得注意的就是,如果(A+B)%p-i小于零了,那么我们就是要从更高的位上借一位,然后DP的f数组多开一位记录一下借位的情况就行了

  总结一下就是T1的懵逼导致后面的题做起来有些心理阻碍,做起来就没有那种顺畅的感觉,然后T1看出来是lis之后,打完想到了T2暴力之后也没有什么时间敲了,感觉最后一个小时直接就浪费掉了,T1的影响还是太大了,而且lis也并不难想么,逆序对想不出来完全可以换一种思路么。。。。。。。。。。。。

  T1还是挺令人印象深刻的。。。。。。。。。。。。

原文地址:https://www.cnblogs.com/FOXYY/p/8569536.html

时间: 2024-10-30 15:44:36

2018/3/13的相关文章

python全栈学习记录--3(2018.1.13) 计算机基础知识

一.Linux操作系统1.unix是目前世界上最稳定,安全的系统.是分时操作系统,多个联机终端和采用多道技术.2.开源代表代表公开,所有人可以编辑查看,但不代表免费.3.服务器要的是性能,稳定,效率,不间断运行.故LINUX更能胜任,WINDOW不行,运行久了就会很卡.4.桥接:用交换机的方式上网,相当于在局域网内多增加一台电脑联网.5.虚拟内存一般设为物理内存的1.5-2倍,但不超过8G.物理内存大于4G就足以运行目前几乎所有程序了,没必要设置虚拟内存了. 二.网络基础之OSI五层协议1.网络

2018.3.13 12周2次课

十二周二次课(3月13日) 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 12.6 Nginx安装 下载和解压: cd /usr/local/src wget http://nginx.org/download/nginx-1.13.9.tar.gz tar -zxvf nginx-1.13.9.tar.gz 配置编译选项 cd nginx-1.13.9 ./configure --prefix=/usr/local/nginx

2018.4.13 16周3次课

十六周三次课 (4月13日) 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现 19.7 主动模式和被动模式 主动或者被动是相对客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可. 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力. 服务端有公网ip,客户端只有内网ip,但

2018.6.13 Java语言基础复习总结

Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行. 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序. 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点. 1.3.2 C++语言 是具有面向对象

解读 2018:13 家开源框架谁能统一流计算?

018 年接近尾声,我018 年接近尾声,我策划了"解读 2018"年终技术盘点系列文章,希望能够给读者清晰地梳理出重要技术领域在这一年来的发展和变化.本文是实时流计算 2018 年终盘点,作者对实时流计算技术的发展现状进行了深入剖析,并对当前大火的各个主流实时流计算框架做了全面.客观的对比,同时对未来流计算可能的发展方向进行预测和展望.策划了"解读 2018"年终技术盘点系列文章,希望能够给读者清晰地梳理出重要技术领域在这一年来的发展和变化.本文是实时流计算 20

2018.1.13

和虚拟机折腾了一整天...最后发现是最新版本的vagrant有bug,mdzz. 恰好今天win10还疯狂推补丁,估计是和之前的cpu的bug有关的,然后中途安装补丁还死机了一次... 话说我得考虑把笔记本里的centos换掉了,实在不知道那玩意有啥用.啥时候如果需要出门然后带个centos的笔记本,那就很傻逼了... 原文地址:https://www.cnblogs.com/dynasty919/p/8280585.html

2018.1.13面向对象之继承复习

class Rect{ int width=2, height=6; void setWidth(int width){ this.width=width; //代码1 将参数的值赋给成员变量width } void setHeight(int height){ this.height=height; //代码2 将参数的值赋给成员变量height } int getArea(){ return width*height; } } public class E{ public static vo

精选文章推荐汇总-2018.03.13

springboot1.5.9 + mybatis + layui + shir搭建后台权限管理系统 作者:wyait简介:业务场景 spring boot + mybatis后台管理系统框架: layUI前端界面: shiro权限控制,ehCache缓存: 老司机带你在MySQL领域"大吉大利,晚上吃鸡" 作者:superZS简介:本章介绍MySQL官方推荐的一款高可用集群方案MySQL Group Replication.简称:MGR(组复制).它是官方推出的一种基于Paxos协议

2018.4.13 三周第四次课

进入编辑模式 概念:在一般模式下不可以修改某个字符,如果要修改字符,只能进入编辑模式: 从一般模式进入编辑模式只需要按如下7个字母任意一个即可. 在进入编辑模式时,在屏幕的尾行会显示"INSERT或REPLACE"的字样(插入) 从编辑模式回到一般模式,只需要按"ESC"键即可. "编辑命令介绍: i 在当前字符前插入: I 在光标所在行的行首插入: a 在当前字符后插入: A在光标所在行的行尾插入 o 在当前行的下一行插入新一行 O 在当前行的上一行插入