摘要: 看了N遍才看懂题意。。。 题意:给N个区间,每次能向左或向右走区间长度这么多,问能不能每次都在[0,m]这个范围内 思路:爆搜是不行的。。这里把状态记录一下能剪枝很多 定义:s[pos][now]=-1\0\1分别为“时间now走到pos这个位置是不能、没试过、能走到终点而满足要求” pos最大是1 阅读全文
posted @ 2016-03-11 00:30 Septher 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:给N个点,M条边,随后加入Q条边,边可能会重复,对于每一次加边,问图中剩余桥的数量 思路:简单的做法就是建图后用tarjan求出桥的数量cnt,再对于每次新加的边u,v,用总数cnt减去所成环(有的话)里桥的数量 #include"cstdio" #include"queue" #includ 阅读全文
posted @ 2016-03-09 15:31 Septher 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题意:N个线段,机器最多一次录K段,不重叠的可以连续录而不占用其他资源,问最多能录几段 思路:首先经典的贪心排序方法排序(按结束时间从小到大,如果结束时间相同,按起始时间从大到小) 我们可以想象有K个机器,那我们需要记录的就是第i个机器在什么时候才会有空 对于每一段[l,r],我们只需要查找这K个机 阅读全文
posted @ 2016-03-09 10:54 Septher 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题意:在第一象限,所有坐标都为整数,有N个点有哥布林,再有M个圆,圆心半径已知,在圆内的哥布林会挂掉,问最后剩几个哥布林活着 思路:这里要注意到,虽然N和M很大,但是r很小,坐标范围也不大(1e4) 我们对于每一个x轴上的整数点开一个set,保存在这条线上的哥布林的纵坐标 对于每一个圆,我们枚举它覆 阅读全文
posted @ 2016-03-09 10:46 Septher 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题意:N台请求,每台机器1秒能处理K个,处理一个需要耗时1s,给出每个请求的出现时间,问至少需要几个机器才能全部处理? 思路:把每个请求的时间看成一个区间,比如在0时间点出现,则它占用机器的时间为[0,1000) 为了简化,我们直接写成占用区间为[i,i+999] 只要某一个点的覆盖数未超过K,则一 阅读全文
posted @ 2016-03-09 10:37 Septher 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题意:求字典序最小且重复次数最多的连续重复子串 思路: 枚举循环节长度i,再枚举起始位置(0开始,每次加i),求出循环次数 这里有一个关键:枚举的起始位置不一定是答案所在的位置 比如:c a b a b a b 枚举循环节长度为2,起始位置2时 根据RMQ可O(1)求出suffix(2)和suffi 阅读全文
posted @ 2016-03-09 10:28 Septher 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 求最长回文串 策略是枚举中心位置往两边拓展,这里要分长度为奇数、偶数的情况 n^2的复杂度无法接受,枚举中心后,这里用后缀数组来快速求回文长度 首先在字符串末尾插入一个未出现过的字符,目的是避免字符串翻转后拼接到末尾时的首部和原字符串末尾连接成新的后缀 比如说abac->abaccaba,这里的ac 阅读全文
posted @ 2016-03-02 23:36 Septher 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 求满足下列要求的最长子串: 1.长度不小于5 2.出现两次(子串整体加上某个值也算出现一次 3.两次出现无重叠 难处理的是第二个要求:整体增加某个数也算出现一次 稍微思考一下便会得出:整体加上某个值后,相邻数的差值是不变的 所以用一个数组r[i]保存mus[i+1]与mus[i]的差值 这里要注意将 阅读全文
posted @ 2016-03-02 23:19 Septher 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 居然想用后缀数组做。。。果然还是太弱了 直接暴力就好,sort的时候把拼接结果小的string放在前面 #include"cstdio" #include"queue" #include"cmath" #include"stack" #include"iostream" #include"algor 阅读全文
posted @ 2016-03-02 08:55 Septher 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 计算畸形区域的周长比面积的扫描要麻烦些,原因就在不重叠区域的处理,同一段高度可能要重复叠加所以线段树的结点里要多维护三个东西:times:区间里不重叠的区间数比如说第一个区间是1~5,第二个是2~6,,第三个是9~10,那前两个可以合成1~6,和第三个独立,则这个整体的times为2为了维护time... 阅读全文
posted @ 2016-01-25 22:18 Septher 阅读(185) 评论(0) 推荐(0) 编辑