摘要: 传送门 这道题是经典的区间DP。因为它要求有每两个相邻的石子堆合并,所以很显然对于区间[l,r]内的情况,我们只要枚举端点k,之后把这左右两端的石子合并取最大/小即可。 之后,这题是环形怎么破?显然不需要枚举开头……直接把数组开成原来二倍长就可以。之后每次在取答案的时候只要计算一段长度为n的就可以了 阅读全文
posted @ 2018-09-01 23:39 CaptainLi 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题的思路还是很好想的,就是维护一个差分数组,这样可以很容易的在O(n)的时间内计算出每天要的教室的数量。 之后的问题在于……怎么求最早的不符合要求的订单呢? 那就是老套路啦,二分答案! 先判断一下所有的都加上可不可行,如果不可行,我们二分那个不合法订单的编号,把所有在它之前的都加上,并且 阅读全文
posted @ 2018-09-01 23:34 CaptainLi 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题就是一道不大容易被看出来的二分图匹配……(也可能是我太菜了qaq) 首先我们看一下,题目要求我们把对角线上都填满。我们把每一行和每一列都抽象成一个点,那么我们只要让每一行和每一列都匹配上就可以。 先把每行向源点连边,每列向汇点连边,行和列之间,如果g[i][j]是1的话那么就把第i行和 阅读全文
posted @ 2018-09-01 23:18 CaptainLi 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题原来是可以用莫队暴力过掉的……但是数据加强之后500000万的范围使得nsqrtn的算法无法通过,那我们只能用log的方法,也就是树状数组。 本题要求我们统计的是贝壳的个数,我们唯一的困难在于如何判断重复元素。考虑这样一个事情,对于一些右端点相同的区间,我们在统计这些区间之内的情况的时 阅读全文
posted @ 2018-09-01 22:24 CaptainLi 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 传送门 这还是很显然是一道二分图匹配的题……(看数据范围辣么小) 其实这题就是建图稍微复杂一点。对于每个学生,我们把他们的床连到汇点上,然后对于每个没回家的和外来的人,我们把他们连到源点上,之后在人和床之间就按给定的关系连上就可以。注意自己和自己的床要连一条边。 处理过程比较繁琐……我们可以选择用1 阅读全文
posted @ 2018-08-30 22:59 CaptainLi 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题很明显是一道并查集 + 维护并查集中元素到根结点之间距离的题。 具体的维护方法也很简单。fa数组表示每个点的父亲,dis数组表示当前节点到父亲的距离,sum数组表示当前节点所在集合中元素个数。预处理的时候把每个点的dis设为0,sum设为1. 之后对于每次战舰合并操作,将其中一个战舰所 阅读全文
posted @ 2018-08-30 22:32 CaptainLi 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 传送门1(简单版) 传送门2(增强版) AC自动机……(至于自动机是啥我也看不懂……请自行百度) AC自动机简单来说可以被看成是trie树和KMP算法的结合体,它的用途主要是多模匹配,就是给你一个文本串和多个模式串,询问你诸如:有多少个模式串在文本串中出现过,或是什么模式串在文本串中出现了多少次之类 阅读全文
posted @ 2018-08-29 23:40 CaptainLi 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题明显是二分图匹配……(因为我至今不会写匈牙利我就跑了遍dinic) 非常的明显,自己设定一个原点和汇点。把原点向所有的外籍飞行员连容量为1的边,所有的英国飞行员向汇点连容量为1的边,中间的边按题目描述,给你一条你就建一条容量为1的边。 之后直接跑网络流。至于最后怎么判断哪几个飞行员是配 阅读全文
posted @ 2018-08-29 22:39 CaptainLi 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题看题目描述……联通具有传递性?很容易想到是并查集。 不过按照题目的描述似乎很麻烦……这样每次摧毁会令人很难受。不过这并不是问题,我们把它倒过来,从最终被摧毁的状态开始,直接往回加边,每次用并查集维护即可。 还有就是如何计算联通块数?一开始我智障般的想了好久……后来被mrclr一语道破: 阅读全文
posted @ 2018-08-29 22:30 CaptainLi 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 传送门 这道题看数据范围<=9,很容易想到是状压DP。 根据各位dalao的讲述,状压DP中经常把每一个行的情况都压缩起来,之后进行DP。那么这样的话想起DP的状态就比较简单,dp[i][j][s]表示枚举到第i行,第i行的状态为j,算上当前行一共放了s个国王一共有多少种情况。其中j是一个二进制串, 阅读全文
posted @ 2018-08-29 22:24 CaptainLi 阅读(151) 评论(0) 推荐(0) 编辑