随笔分类 -  算法效率

摘要:题目:给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。 解法:与二分法枚举中点使区间分成2份不一样,三分法是枚举三分点,再根据题目的情况修改 l , r 。 P.S.嘻嘻,其实我就是为了凑够我这3个月博客刚好150篇才补了这个我NOIP比 阅读全文
posted @ 2016-11-21 18:31 konjac蒟蒻 阅读(375) 评论(0) 推荐(0)
摘要:题意:求n个串的字典序最小的最长公共子串。 解法:枚举第一个串的子串,与剩下的n-1个串KMP匹配,判断是否有这样的公共子串。从大长度开始枚举,找到了就break挺快的。而且KMP的作用就是匹配子串,近乎O(n)的速度,很快。 P.S.对于字符串要仔细!!! 阅读全文
posted @ 2016-11-17 22:28 konjac蒟蒻 阅读(183) 评论(0) 推荐(0)
摘要:题意:给定一个由字符组成的矩阵,求出它的面积最小的覆盖矩阵。(感觉应该是可重叠的......* (・ω・)っ) 解法:KMP。行列互不影响,可以问题分解。先求出每一行的最小重复串,利用kmp中的next[ ]数组,然后求其最小公倍数。若变成最大值就可以break了,这也是我代码本来应该O(2*m*n 阅读全文
posted @ 2016-11-17 21:16 konjac蒟蒻 阅读(212) 评论(0) 推荐(0)
摘要:题目:DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用。DZY喜欢在地里散步。他总是从任意一个格点出发,沿着格线行走直到回到出发点,且在行走途中不允许与已走过的路线有任何相交或触碰(出发点除外)。记这条封闭路线内部的格子总价值为V,路线上的 阅读全文
posted @ 2016-11-16 19:35 konjac蒟蒻 阅读(829) 评论(0) 推荐(0)
摘要:题目:你去找某bm玩,到了门口才发现要打开他家的大门不是一件容易的事…… 他家的大门外有n个站台,用1到n的正整数编号。你需要对每个站台访问一定次数以后大门才能开启。站台之间有m个单向的传送门,通过传送门到达另一个站台不需要花费任何代价。而如果不通过传送门,你就需要乘坐公共汽车,并花费1单位的钱。值 阅读全文
posted @ 2016-11-16 19:16 konjac蒟蒻 阅读(539) 评论(0) 推荐(0)
摘要:P.S.又是一个抽时间学了2个小时的新东西......讲解在上半部分,题解在下半部分。 先说一下转的原文:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html我挑选部分转了过来:01分数规划问题 定义:给定两个数组,a[i]表示 阅读全文
posted @ 2016-11-16 15:09 konjac蒟蒻 阅读(344) 评论(0) 推荐(0)
摘要:题目链接: 51nod1674 题意:规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积。现在l有一个 N 个数的序列,问所有n*(n+1)/2个区间的贡献的和对1000000007取模后的结果。 解法:暴力是O(n^2),我是尽量找了相差1的区间之间的规律,枚举区 阅读全文
posted @ 2016-11-16 10:24 konjac蒟蒻 阅读(172) 评论(0) 推荐(0)
摘要:题意:小Z有N只袜子,有不同的颜色。他有M个提问,问从编号为[L,R]的袜子中随机选一双同色的袜子的概率,用最简分数表示。 解法:经典的莫队算法——无修改、不强制在线(可离线)、状态转移可以一步完成。 步骤如下: 1.对询问按第一关键字的平方根 sqrt(x) 从小到大排序进行分组,再是各组中按第二 阅读全文
posted @ 2016-11-15 11:33 konjac蒟蒻 阅读(186) 评论(0) 推荐(0)
摘要:题意:一个 L*R 的网格里有 N 棵树,要求找一个最大空正方形并输出其左下角坐标和长。(1≤L,R≤10000, 0≤N≤100) 解法:枚举空正方形也就是枚举空矩阵,先要固定一个边,才好继续操作。(P.S.许多类型的题都是这样:先固定一个变量,再比较另外的变量。也就是我之前提到过的“部分枚举”。 阅读全文
posted @ 2016-11-15 11:10 konjac蒟蒻 阅读(732) 评论(0) 推荐(0)
摘要:题意:有N条长度为1的线段,要求使每条线段分别在相应区间,且“空隙”数目最小。输出“空隙”数。(1≤N≤100000) 解法:(P.S.我这题竟做了2个多小时,还是有点迷糊......ヽ(≧□≦)ノ)先按右端点从小到大排序,再是左端点。于是有2个理解:1. 扫一遍,r保存之前的线段的右端点的最大值, 阅读全文
posted @ 2016-11-11 22:26 konjac蒟蒻 阅读(413) 评论(0) 推荐(0)
摘要:题意:输入1~N的一个排列,每次可以交换2个整数,问使排列变成1~N的一个环状排列所需的虽少交换次数。(3≤N≤500) 解法:(又是一道我没打代码,光想和看就花了很久时间的题~QwQ)由于n很小,可以暴力枚举目标的环状排列,于是贪心交换——把元素 x 直接与它的目标位置上的元素互换,这样至少使1个 阅读全文
posted @ 2016-11-11 21:25 konjac蒟蒻 阅读(344) 评论(0) 推荐(0)
摘要:题意:有N个工作,已知每个工作需要的时间和截止时间。要求所有工作穿行完成,第一项任务开始的时间不早于时刻0。问最多能完成多少个工作。(N≤800000) 解法:贪心。可以模型化题目为:已知N个任务的长度和右端点的限制位置,问最多能完成的任务的个数。——也就是每一步在一定条件下要使得数目尽量大,以及时 阅读全文
posted @ 2016-11-11 20:40 konjac蒟蒻 阅读(565) 评论(0) 推荐(0)
摘要:题意:给定平面上N个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个店,都有一个选出的点离它的欧几里德距离不超过D。 解法:先把问题转换成模型,把对平面的点满足条件的点在x轴的直线上可得到一个个区间,这样就是选最小的点覆盖所有的区间的问题了。我之前的一篇博文有较详细的解释:关于贪心算法的 阅读全文
posted @ 2016-11-10 21:54 konjac蒟蒻 阅读(208) 评论(0) 推荐(0)
摘要:题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知。请输出一种正负号的情况,使得所有数的和为0。(N≤100000) 解法:(我本来只想静静地继续做一个口胡选手...←_← 但是因为这题的贪心实在是太厉害了!我就单看,就盯了题解半小时以上...而代码又那么短,我就打了代码了...其实 阅读全文
posted @ 2016-11-10 21:39 konjac蒟蒻 阅读(846) 评论(0) 推荐(0)
摘要:题意:已知 N 位选手的3题的预期得分,得分要不全拿,要不为0。且知道最后的实际名次,而且得分相同的选手,ID小的排在前面。问这样的名次可能吗。若可能,输出最后一名的最高可能得分。(N≤16384) 解法:(P.S.现在让我来做个口胡选手......(—o—) 不打算打代码了。)我有2种想法:1.排 阅读全文
posted @ 2016-11-10 20:03 konjac蒟蒻 阅读(192) 评论(0) 推荐(0)
摘要:P.S.模拟真の难打,我花了近乎三小时!o(≧口≦)o 模拟题真的要思路清晰!分块调试。 题意:著名的折纸问题:给你一张很大的纸,对折以后再对折,再对折……每次对折都是从右往左折,因此在折了很多次以后,原先的大纸会变成一个窄窄的纸条。现在把这个纸条沿着折纸的痕迹打开,每次都只打开“一半”,即把每个痕 阅读全文
posted @ 2016-11-10 19:30 konjac蒟蒻 阅读(701) 评论(0) 推荐(0)
摘要:题意:有一个N位整数,要求输出删除其中D个数字之后的最大整数。 解法:贪心。(P.S.要小心,我WA了2次...)由于规定了整数的位数,那么我们要尽量让高位的数字大一些,也就是要尽量删去前面小的数字。于是我们得到的数字前面是有一串下降的单调队列的,所以最开始就要维护这个。但是要注意——我们不是立马得 阅读全文
posted @ 2016-11-10 14:49 konjac蒟蒻 阅读(395) 评论(0) 推荐(0)
摘要:原文真的写了很长,我就不好意思copy过来了(///ω///) 还是大家点开过去看看吧~ 算法竞赛入门经典(第二版)-刘汝佳-第八章 高效算法设计 习题(18/28) 阅读全文
posted @ 2016-11-10 11:46 konjac蒟蒻 阅读(198) 评论(0) 推荐(0)
摘要:题意:有一个N个字符串(N≤1000,N为偶数)的集合,要求找一个长度最短的字符串(可不在集合内)S,使得集合中恰好一半的串小于等于S,另一半大于S。如果有多解,要求输出字典序最小的解。 解法:本来我是想分析情况用if else实现的,但是细节很多,特别容易错。结果果然如此。╮(╯_╰)╭ 那么便看 阅读全文
posted @ 2016-11-10 11:41 konjac蒟蒻 阅读(302) 评论(0) 推荐(0)
摘要:题意:给出n个区间[a,b),有2个记录器,每个记录器中存放的区间不能重叠。求2个记录器中最多可放多少个区间。 解法:贪心。只有1个记录器的做法详见——关于贪心算法的经典问题(算法效率 or 动态规划)。而对于2个,就是在1个的基础上(按 bi 排序,选第一个与之前没有相交的区间)维护2个值,注意要 阅读全文
posted @ 2016-11-08 21:06 konjac蒟蒻 阅读(462) 评论(0) 推荐(0)