题目链接 st(n)表示sqrt(n) 为使块状链表不会退化,通常将每块的大小S维持在[st(n)/2,2st(n)]中,这样块数C也一定[st(n)/2,2st(n)]中 在此使用另一种方法(方便)维持这种性质:保证任意相邻两块的size相加>st(n),并且每块大小<=st(n) 这样可保证块数C在[st(n),2st(n)]中 在每次块状链表结构改变后执行maintain,顺序扫描链表,将相邻两块能合并就合并 1.注意Insert的读入,会有回车 2.为避免各种翻车,还是加上判断!=-1…
P4008 [NOI2003]文本编辑器 题目描述 很久很久以前,\(DOS3.x\)的程序员们开始对 \(EDLIN\) 感到厌倦.于是,人们开始纷纷改用自己写的文本编辑器⋯⋯ 多年之后,出于偶然的机会,小明找到了当时的一个编辑软件.进行了一些简单的测试后,小明惊奇地发现:那个软件每秒能够进行上万次编辑操作(当然,你不能手工进行这样的测试) !于是,小明废寝忘食地想做一个同样的东西出来.你能帮助他吗? 为了明确目标,小明对"文本编辑器"做了一个抽象的定义: 文本:由 \(0\) 个或…
先推广一下 求赞 我们考虑这样的一个问题 给你一个序列,要求你支持插入,删除,查询单点值 如果用数组,查询O(1),插入删除最坏O(n) 如果用链表,插入删除O(1),查询最坏O(n) 如果用平衡树-- 不要跟我说平衡树 那么我们是否可以考虑:将一个一个的数组以链表的形式串起来,这样是否会提高操作的效率,又是否会降低一些操作的效率呢? 可以手动模拟一下各种操作 块状链表就是这样一个略显暴力的算法 但其复杂度较为优秀,所以在很多地方的应用都非常广 用一句话说叫"弱弱联合" 码量稍大,但极…
本文同时发表于洛谷日报,您也可以通过洛谷博客进行查看. 1.介绍与开始使用 1.1 这是什么? StackEdit是基于PageDown.Stack Overflow和其他堆栈交换站点使用的Markdown库的功能齐全的开源Markdown编辑器.它可以在离线时使用,并可以把数据(md文件)存储到浏览器上,还可以绑定CouchDB.GitHub.GitLab.Google Drive等工作空间.它还可以任意创建文件夹,并且可以任意创建文件.被删除的文件还会保留在Trash文件夹里. 1.2 开始…
其实看明白了就是一道水题 毕竟模板 splay敲一发,插入一个串的时候先把它构建成一棵平衡树,再挂到原来的splay上面去即可 没别的了,上代码 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; inline int read(){ ,flag=;char ch=getchar(); '){ ; ch=getchar()…
题目链接 AC自动机上dp第一题嗷. 如果直接求可读文本的数量,显然要容斥,不好搞. 于是考虑求不可读文本的数量,再用\(26^m\)减去其即可. 建出AC自动机,如果一个节点为单词结尾或其fail链中有节点为单词结尾,那么这个点就不能走,这个显然可以在bfs的时候顺便求出来. 然后就是大家熟知的方案数dp了,\(f[n][m]\)表示走到节点\(n\)用\(m\)步的方案数,转移就不说了. 最后答案就是\(26^m-\sum_{i=1}^mf[i][m]\) #include <cstdio>…
题目传送门 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽量短的时间内找到Chris.他们告诉Chris的老师:“根据以往的经验,Chris现在必然躲在朋友Shermie或Yashiro家里偷玩<拳皇>游戏.现在,我们就从家出发去找Chris,一但找到,我们立刻给您打电话.”说完砰的一声把电话挂了. Chris居住的城市由N个居住点和若干条连…
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P2201 像这种容易让人产生"我已经一眼秒了这题"的感觉的题才是最致命的题-- 根据题意用链表模拟即可,主要思路看代码注解,都没啥好讲的. 然而这题我却\(Wa\)了很多遍. 震惊!某湖南\(OI\)选手竟痛\(Wa\)傻逼模拟题!原因竟是因为-- 我把"输出第\(k\)位及之前最大的…
Analysis 题意虽然说先去谁家再去谁家,但是我们不需要管这个,因为AA.BB.CC三个点我们可以任意互相交换它们所代表的对象,所以题目要求的就是在一棵树上找到3个点AA.BB.CC令AB+BCAB+BC最大,同时要满足AC>ABAC>AB. 由于这是一棵树,它满足非常可爱的性质,就是如果找一个点出去两条路径使它们的合最大,那么一条是直径时一定会存在一种最大的方案. 所以我们可以使要找的两条路径其中一条是直径(设为ABAB),然后枚举剩下的点,找到一个到达直径端点最长的另一条路径,不过因为…
刚开始不熟悉Ubuntu,设置个文本编辑界面都难找到: 打开后在顶上的导航栏,下拉框内有preferences: 里面可以设置视图.字体颜色等…