11 2016 档案
摘要:这篇我就随意写啦~不用统一的“题解”形式。♪(^∀^●)ノ 也分好几次慢慢更吧~ 对于NOIP2016的总结,我本想善始善终back回,但是心情不足以支撑我,那就只能有始有终了......下面进入我的话唠模式......另外,我真的如名是蒟蒻,想看神犇的“OI生涯”就不用往下看了。<( ̄︶ ̄)↗ 初
阅读全文
摘要:题目:给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。 解法:与二分法枚举中点使区间分成2份不一样,三分法是枚举三分点,再根据题目的情况修改 l , r 。 P.S.嘻嘻,其实我就是为了凑够我这3个月博客刚好150篇才补了这个我NOIP比
阅读全文
摘要:题目:给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数。 解法:匈牙利算法。(以前我总是不记得......)实质上应该有贪心的思想,每次都尽量匹配,找到能和自己匹配的也尽量让它们匹配。若对方已有匹配的对象,就让那个对象尽量调整来使自己这对能凑起来。而要注意,每次问过的对象就不要再问
阅读全文
摘要:题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配。 a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25。 解法:【思考】1.X 暴力。枚举 a 中的子串,选出来排序后比对名次。O(n* m log m *m)=O(n*m^2*log
阅读全文
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某一个数加上x;2.求出某区间每一个数的和。 解法:树状数组求前缀和。
阅读全文
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某区间每一个数数加上x;2.求出某一个数的和。 解法:树状数组+前缀和优化。数组中每位存和前一位的数的差,这样区间修改只用改两位,单点询问就是求前缀和。
阅读全文
摘要:题目:有一个图有N个顶点,M条边。边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向)。共T组数据。对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号)。 注意——坑爹的输出啊!!它不是平常的 YES 和 NO!! 解法:1.
阅读全文
摘要:题意:求n个串的字典序最小的最长公共子串。 解法:枚举第一个串的子串,与剩下的n-1个串KMP匹配,判断是否有这样的公共子串。从大长度开始枚举,找到了就break挺快的。而且KMP的作用就是匹配子串,近乎O(n)的速度,很快。 P.S.对于字符串要仔细!!!
阅读全文
摘要:题意:给定一个由字符组成的矩阵,求出它的面积最小的覆盖矩阵。(感觉应该是可重叠的......* (・ω・)っ) 解法:KMP。行列互不影响,可以问题分解。先求出每一行的最小重复串,利用kmp中的next[ ]数组,然后求其最小公倍数。若变成最大值就可以break了,这也是我代码本来应该O(2*m*n
阅读全文
摘要:题意:求子串在文本串中出现了多少次。 解法:使用KMP的next[ ]和tend[ ]数组计数。
阅读全文
摘要:题意:给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀。从小到大依次输出这些子串的长度。 解法:利用KMP中next[ ]数组的性质,依次找到前缀、后缀匹配的字符串。
阅读全文
摘要:题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用。 解法:在Dinic的基础下做spfa算法。
阅读全文
摘要:题目:给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)。(N<=10000000,M<=100000) 解法:1.欧拉筛O(n),数组近乎100KB;2.(我这题copy了数据范围肯定是有原因滴......)欧拉函数判断素数O(m log n),m 比 n 小啊,可以
阅读全文
摘要:题意:给你一个字符串,求这个字符串到第 i 个字符为止的重复子串的个数。 解法:判断重复子串的语句很重要!!if (p && i%(i-p)==0) printf("%d %d\n",i,i/(i-p)); 我之前一直不是很理解,而实际上多枚举几种情况就好了。若是重复的,那么next[i]肯定是最大
阅读全文
摘要:题目:给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 解法:spfa算法。
阅读全文
摘要:题目:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。 解法:Kruskal求MST。
阅读全文
摘要:题目:给出一个网络图,以及其源点和汇点,求出其网络最大流。 解法:网络流Dinic算法。
阅读全文
摘要:题目:给定n*n的矩阵A,求A^k。 解法:利用矩阵乘法的定义和快速幂解答。注意用负数,但是数据太弱没有卡到我......(P.S.不要在 typedef long long LL; 前使用 LL......━━( ̄ー ̄*|||━━) P.S.在multi函数里,若将所有相乘的和先加起来不会爆 lo
阅读全文
摘要:题目:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 解法:倍增。
阅读全文
摘要:题目:有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,
阅读全文
摘要:题意:已知一个数列,你需要进行下面三种操作:1.将某区间每一个数加上x;2.将某区间每一个数乘上x;3.求出某区间每一个数的和。 解法:(唉 :-(,这题卡住我了......)对于加法和乘法的混合操作,lazy 标记记为 add , mul。 我们可以把运算全部化为 x*mul+add*(r-l+1
阅读全文
摘要:题目:已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x;2.求出某区间每一个数的和。 解法:如题,模版题。需要加上 lazy 标记,也就是我的 upd。lazy 标记的思路就是对一个结点更新(算和)了,但不继续更新它下面的结点,而是标记下来(每个数需加上的值)。注意——边界判断,不能
阅读全文
摘要:题目:DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用。DZY喜欢在地里散步。他总是从任意一个格点出发,沿着格线行走直到回到出发点,且在行走途中不允许与已走过的路线有任何相交或触碰(出发点除外)。记这条封闭路线内部的格子总价值为V,路线上的
阅读全文
摘要:题目:在一些一对一游戏的比赛(如下棋、乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况。有的时候,无聊的人们会津津乐道于统计有多少这样的剪刀石头布情况发生,即有多少对无序三元组(A, B, C),满足其中的一个人在比赛中赢了另一个人,另
阅读全文
摘要:题目:你去找某bm玩,到了门口才发现要打开他家的大门不是一件容易的事…… 他家的大门外有n个站台,用1到n的正整数编号。你需要对每个站台访问一定次数以后大门才能开启。站台之间有m个单向的传送门,通过传送门到达另一个站台不需要花费任何代价。而如果不通过传送门,你就需要乘坐公共汽车,并花费1单位的钱。值
阅读全文
摘要:题目:有一种图形叫做五角形圈。一个五角形圈的中心有1个由n个顶点和n条边组成的圈。在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形。这些五角形只在五角形圈的中心的圈上有公共的顶点。现在给定一个n五角形圈,你的任务就是求出n五角形圈的不同生成树的数目。还记得什么是图的生
阅读全文
摘要:P.S.又是一个抽时间学了2个小时的新东西......讲解在上半部分,题解在下半部分。 先说一下转的原文:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html我挑选部分转了过来:01分数规划问题 定义:给定两个数组,a[i]表示
阅读全文
摘要:题目链接: 51nod1674 题意:规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积。现在l有一个 N 个数的序列,问所有n*(n+1)/2个区间的贡献的和对1000000007取模后的结果。 解法:暴力是O(n^2),我是尽量找了相差1的区间之间的规律,枚举区
阅读全文
摘要:题意:从编号为 1~N 的音阶中可选任意个数组成一个音乐片段,再集合组成音乐篇章。要求一个音乐篇章中的片段不可重复,都不为空,且出现的音符的次数都是偶数个。问组成 M 个片段的音乐篇章有多少种。答案取模1000000007(质数)。 解法:先将题目模型化:N 个数组成 M 种组合,且要求组合之间互不
阅读全文
摘要:中国剩余定理:定义为求解有 k 对关系:P % ai = bi,其中 ai 两两之间互质的 P 的最小正整数。 解法:1. 无论 ai 之间是否互质,这个方法都是通用的:将两两之间不互质就是把原来的关系式化为:P = bi (mod ai) → ai * x + bi = P,用拓展欧几里德求解同余
阅读全文
摘要:题意:给出 A%9973 和 B,求(A/B)%9973的值。 解法:拓展欧几里德求逆元。由于同余的性质只有在 * 和 + 的情况下一直成立,我们要把 /B 转化为 *B-1,也就是求逆元。 对于 B-1,P为模数9973,那么 B*B-1=1(mod P) → 把 B-1 看成 x ,就是 Bx+
阅读全文
摘要:题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数。 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题—— 【poj 2478】Farey Sequence(数论--欧拉函数 找规律求前缀和) 求 x/y,gcd(x,y)
阅读全文
摘要:题意:定义 Fn 序列表示一串 <1 的分数,分数为最简分数,且分母 ≤n 。问该序列的个数。(2≤N≤10^6) 解法:先暴力找规律(代码见屏蔽处),发现 Fn 序列的个数就是 Φ(1)~Φ(n) 的和。于是用欧拉筛预处理就好了。 注意——求前缀和要用 long long 的类型。
阅读全文
摘要:题意:求奇质数 P 的原根个数。若 x 是 P 的原根,那么 x^k (k=1~p-1) 模 P 为1~p-1,且互不相同。 (3≤ P<65536) 解法:有费马小定理:若 p 是质数,x^(p-1)=1 (mod p)。这和求原根有一定联系。 再顺便提一下欧拉定理:若 a,n 互质,那么 a^Φ
阅读全文
摘要:题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数)。 解法:用欧拉筛和欧拉函数的一些性质: 1.若p是质数,Φ(p)=p-1; 2.欧拉函数是积性函数,即若a,b互质,则Φ(ab)=Φ(a)*Φ(b); 3.若a,b不互质,则Φ(ab)=Φ(a)*b。 若 n≤10
阅读全文
摘要:题意:小Z有N只袜子,有不同的颜色。他有M个提问,问从编号为[L,R]的袜子中随机选一双同色的袜子的概率,用最简分数表示。 解法:经典的莫队算法——无修改、不强制在线(可离线)、状态转移可以一步完成。 步骤如下: 1.对询问按第一关键字的平方根 sqrt(x) 从小到大排序进行分组,再是各组中按第二
阅读全文
摘要:题意:一个 L*R 的网格里有 N 棵树,要求找一个最大空正方形并输出其左下角坐标和长。(1≤L,R≤10000, 0≤N≤100) 解法:枚举空正方形也就是枚举空矩阵,先要固定一个边,才好继续操作。(P.S.许多类型的题都是这样:先固定一个变量,再比较另外的变量。也就是我之前提到过的“部分枚举”。
阅读全文
摘要:题意:Kiki 有 X 个硬币,已知 N 组这样的信息:X%x=Ai , X/x=Mi (x未知)。问满足这些条件的最小的硬币数,也就是最小的正整数 X。 解法:转化一下题意就是 拓展欧几里德求解同余方程组了。我们可以得到 N 个方程:Mi*x+Ai=X。一些解释请看下面的代码。
阅读全文
摘要:题目:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。 解法:先同上题一样用拓展欧几里德求出同余方程组的最后一个
阅读全文
摘要:题意:Elina看一本刘汝佳的书(O_O*),里面介绍了一种奇怪的方法表示一个非负整数 m 。也就是有 k 对 ( ai , ri ) 可以这样表示——m%ai=ri。问 m 的最小值。 解法:拓展欧几里德求解同余方程组的最小非负整数解。(感觉挺不容易的......+_+@) 先看前2个关系式: m
阅读全文
摘要:题意:已知2只青蛙的起始位置 a,b 和跳跃一次的距离 m,n,现在它们沿着一条长度为 l 的纬线(圈)向相同方向跳跃。问它们何时能相遇?(好有聊的青蛙 (΄◞ิ౪◟ิ‵) *)永不相遇就输出"Impossible"。(蠢得可怜 -_-!) 解法:用拓展欧几里德求同余方程的最小正整数解。(a+mx)
阅读全文
摘要:题意:有一个在k位无符号整数下的模型:for (variable = A; variable != B; variable += C) statement; 问循环的次数,若“永不停息”(←_←)*,就输出"FOREVER"。 解法:用拓展欧几里德方法求出gcd最大公因数,再利用同余性质转化,求同余
阅读全文
摘要:原博是这个链接: 线性筛(欧拉筛) http://www.cnblogs.com/zhuohan123/p/3233011.html 我只拷贝了我在学的内容—— 一般的筛法(PPT里叫埃拉托斯特尼筛法,名字异常高贵)的效率是O(NlglgN)(其实很接近O(n)啊!),对于一些例如N=1000000
阅读全文
摘要:题意:C公司有一些资源,每种只有1个,有A、B两个公司分别对其中一些资源进行分组竞标,每组竞标对一些资源出一个总价。问C公司的最大收益。 解法:最小割。将A公司的竞标与源点相连,B公司的与汇点相连,边容量为竞标价。而A、B公司的竞标中有资源冲突的竞标之间连一条边,容量为INF。这样的最大收益就是 总
阅读全文
摘要:题意:有一个区域,有'.'的陆地,'D'的深海域,'E'的浅海域。其中浅海域可以填充为陆地。这里的陆地区域不联通,并且整个地图都处在海洋之中。问填充一定浅海域之后所有岛屿的最长的海岸线之和。 解法:最小割。从“分隔”陆地和海域可以想到“割”的概念,然后我们先不考虑浅海域,要深海域和陆地的对数尽量大,
阅读全文
摘要:题意:有一个水塘,要求把它用围栏围起来,每个费用为b。其中,(#)代表草,(.)代表洞,把一个草变成洞需要费用d, 把一个洞变成草需要费用f。请输出合法方案中的最小费用。 解法:(不好理解......(‘・ω・’)っ) 【思考】 1.围栏把草和洞分隔开了,也就是“割”。但“割”只是把图中的点分成两部
阅读全文
摘要:题意:有N条长度为1的线段,要求使每条线段分别在相应区间,且“空隙”数目最小。输出“空隙”数。(1≤N≤100000) 解法:(P.S.我这题竟做了2个多小时,还是有点迷糊......ヽ(≧□≦)ノ)先按右端点从小到大排序,再是左端点。于是有2个理解:1. 扫一遍,r保存之前的线段的右端点的最大值,
阅读全文
摘要:题意:输入1~N的一个排列,每次可以交换2个整数,问使排列变成1~N的一个环状排列所需的虽少交换次数。(3≤N≤500) 解法:(又是一道我没打代码,光想和看就花了很久时间的题~QwQ)由于n很小,可以暴力枚举目标的环状排列,于是贪心交换——把元素 x 直接与它的目标位置上的元素互换,这样至少使1个
阅读全文
摘要:题意:有N个工作,已知每个工作需要的时间和截止时间。要求所有工作穿行完成,第一项任务开始的时间不早于时刻0。问最多能完成多少个工作。(N≤800000) 解法:贪心。可以模型化题目为:已知N个任务的长度和右端点的限制位置,问最多能完成的任务的个数。——也就是每一步在一定条件下要使得数目尽量大,以及时
阅读全文
摘要:题意:给定平面上N个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个店,都有一个选出的点离它的欧几里德距离不超过D。 解法:先把问题转换成模型,把对平面的点满足条件的点在x轴的直线上可得到一个个区间,这样就是选最小的点覆盖所有的区间的问题了。我之前的一篇博文有较详细的解释:关于贪心算法的
阅读全文
摘要:题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知。请输出一种正负号的情况,使得所有数的和为0。(N≤100000) 解法:(我本来只想静静地继续做一个口胡选手...←_← 但是因为这题的贪心实在是太厉害了!我就单看,就盯了题解半小时以上...而代码又那么短,我就打了代码了...其实
阅读全文
摘要:题意:已知 N 位选手的3题的预期得分,得分要不全拿,要不为0。且知道最后的实际名次,而且得分相同的选手,ID小的排在前面。问这样的名次可能吗。若可能,输出最后一名的最高可能得分。(N≤16384) 解法:(P.S.现在让我来做个口胡选手......(—o—) 不打算打代码了。)我有2种想法:1.排
阅读全文
摘要:P.S.模拟真の难打,我花了近乎三小时!o(≧口≦)o 模拟题真的要思路清晰!分块调试。 题意:著名的折纸问题:给你一张很大的纸,对折以后再对折,再对折……每次对折都是从右往左折,因此在折了很多次以后,原先的大纸会变成一个窄窄的纸条。现在把这个纸条沿着折纸的痕迹打开,每次都只打开“一半”,即把每个痕
阅读全文
摘要:题意:有一个N位整数,要求输出删除其中D个数字之后的最大整数。 解法:贪心。(P.S.要小心,我WA了2次...)由于规定了整数的位数,那么我们要尽量让高位的数字大一些,也就是要尽量删去前面小的数字。于是我们得到的数字前面是有一串下降的单调队列的,所以最开始就要维护这个。但是要注意——我们不是立马得
阅读全文
摘要:原文真的写了很长,我就不好意思copy过来了(///ω///) 还是大家点开过去看看吧~ 算法竞赛入门经典(第二版)-刘汝佳-第八章 高效算法设计 习题(18/28)
阅读全文
摘要:题意:有一个N个字符串(N≤1000,N为偶数)的集合,要求找一个长度最短的字符串(可不在集合内)S,使得集合中恰好一半的串小于等于S,另一半大于S。如果有多解,要求输出字典序最小的解。 解法:本来我是想分析情况用if else实现的,但是细节很多,特别容易错。结果果然如此。╮(╯_╰)╭ 那么便看
阅读全文
摘要:题意:有一个N个点的有向带权图,要求找若干个有向圈,使得每个点恰好属于一个圈。请输出满足以上条件的最小权和。 解法:有向圈?也就是每个点有唯一的后继。这是一个可逆命题,同样地,只要每个点都有唯一的后继,那么它们一定恰好属于一个圈。而“唯一”可以想到二分图匹配。把每个点拆成两个点,分别放在二分图的两边
阅读全文
摘要:题意:有个N个点M个边的有向加权图,求1~N的两条不相交路径(除了起点和终点外没有公共点),使得权和最小。 解法:不相交?也就是一个点只能经过一次,也就是我后面博文会讲的“结点容量问题”。(呃不,写完这博文几天后的今天,我负责任地 m(._.)m 告诉大家,我不会写这博文了......我的时间不多了
阅读全文
摘要:题意:有一个N行M列的正整数矩阵,输入N个前1~N行所有元素之和,以及M个前1~M列所有元素之和。要求找一个满足这些条件,并且矩阵中的元素都是1~20之间的正整数的矩阵。输入保证有解,而且1≤N,M≤20。 解法:这题的图转换得极妙!(*^▽^*) 我们可以发现找到的矩阵需要满足3个条件:1.N行M
阅读全文
摘要:题意:有N个插头,M个设备和K种转换器。要求插的设备尽量多,问最少剩几个不匹配的设备。 解法:给读入的各种插头编个号,源点到设备、设备通过转换器到插头、插头到汇点各自建一条容量为1的边。跑一次最大流就可得到最多匹配的设备数。 注意啊,我这个代码在神奇☺的地方死循环了——判断队列为空的语句......
阅读全文
摘要:题意:给出n个区间[a,b),有2个记录器,每个记录器中存放的区间不能重叠。求2个记录器中最多可放多少个区间。 解法:贪心。只有1个记录器的做法详见——关于贪心算法的经典问题(算法效率 or 动态规划)。而对于2个,就是在1个的基础上(按 bi 排序,选第一个与之前没有相交的区间)维护2个值,注意要
阅读全文
摘要:题意:给定4个N元素几个A,B,C,D,要求分别从中选取一个元素a,b,c,d使得a+b+c+d=0。问有多少种选法。(N≤4000,D≤2^28) 解法:首先我们从最直接最暴力的方法开始思考:四重循环O(n^4)枚举;三重循环枚举,把剩下的一个集合排序后二分查找,O(n^3 log n)。在进一步
阅读全文
摘要:题意:有N个潜在的bug和m个补丁,每个补丁用长为N的字符串表示。首先输入bug数目以及补丁数目。然后就是对M个补丁的描述,共有M行。每行首先是一个整数,表明打该补丁所需要的时间。然后是两个字符串,第一个字符串是对软件的描述,只有软件处于该状态下才能打该补丁该字符串的每一个位置代表bug状态("-"
阅读全文
摘要:题意:有一个N点M边的无向带权图,边权表示路径上的噪声值。有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值。(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径,用Floyd算法就可以搞定了~o(〃'▽'〃)o
阅读全文
摘要:题意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出。(N≤25,L≤25,注意输出格式) 解法:由于N比较小所有n^2或n^3的复杂度都没有问题。所以就O(n^2)读入;O(n^3)Floyd算法求出传递闭包,d[i][j]表示 i 是否直
阅读全文
摘要:模版题为【hdu 2544】最短路。比较详细的解释请见:【转】彻底弄懂最短路径问题(图论) 前言:我先写一些总结性的话——1.推荐使用优先队列优化后的Dijkstra算法,速度快又稳定,而SPFA算法虽快但不稳定;但也有特殊情况,譬如说:【uva 658】It's not a Bug, it's a
阅读全文
摘要:来源:彻底弄懂最短路径问题 http://www.cnblogs.com/hxsyl/p/3270401.html P.S.根据个人需要,我删改了不少 问题引入 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。解决最短路的问题有以下算法,Dijkst
阅读全文
摘要:P.S.我完全一个字一个字敲出来的血泪史啊~~所以,没有附代码,也是可以理解的啦。OvO 题意:给一个长度为N(N≤200000)的序列,要删除一个连续子序列,使得剩下的序列中有一个长度最大的连续递增子序列,输出其长度。 解法:(参考自紫书)1.X 暴力枚举删除的区间 [l,r],O(n^2),再数
阅读全文
摘要:题意:平面上给出N个点,知道M个关于点X在点Y的正东/西/南/北方向的距离。问在刚给出一定关系之后其中2点的曼哈顿距离((x1,y1)与(x2,y2):l x1-x2 l+l y1-y2 l),未知则输出-1。 解法:带权并查集。sx[x]表示x与其根结点的横坐标的差,sy[x]表示x与其根结点的纵
阅读全文
摘要:题意:有3种动物A、B、C,形成一个“A吃B, B吃C,C吃A ”的食物链。有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类。;第二种说法是"2 X Y",表示X吃Y。假设输入为(d,X,Y)。可知,当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 1)
阅读全文
摘要:P.S.我不想看英文原题的,但是看网上题解的题意看得我 炒鸡辛苦&一脸懵 +_+,打这模版题的代码也纠结至极了......不得已只能自己翻译了QwQ 。 题意:有一个公司有N个企业,分成几个网络,分别从各个网络中选一个机器设置为中心机。下面有2种操作:1.查询当前时间机器x到其所在网络的中心机的距离
阅读全文
摘要:题意:一个账本记录了N个月以来的收入情况,现在有一个侦探员不同时间偷看到M段时间内的总收入,问这个账本是否为假账。 解法:带权并查集+前缀和。 判断账本真假是通过之前可算到的答案与当前读入的值是否相同来完成。那么就是只有知道新读入的区间2端的(在相同区域内的!!)前缀和才可以判断,也就是这2个端点之
阅读全文
摘要:如题,贪心算法隶属于提高算法效率的方法,也常与动态规划的思路相挂钩或一同出现。下面介绍几个经典贪心问题。(参考自刘汝佳著《算法竞赛入门经典》)。P.S.下文皆是我一个字一个字敲出来的,绝对“童叟无欺”,哈哈。(。⌒∇⌒) 耗费了我的很多时间,所以——希望对大家有帮助啊~ (=^‸^=) 一、背包相关
阅读全文
摘要:题意:要求在一个N*N的棋盘上放N个车,使得它们所在的行和列均不同,而且分别处于第 i 个矩形中。 解法:问题分解+贪心。 由于行、列不相关,所以可以先把行和列均不同的问题分解为2个“在区间[1,n]中选择n个不同的整数,使得第 i 个整数在[Li,Ri]内”的问题。 接下来的贪心很重要:先使区间R
阅读全文
摘要:题意:有一个由N个片段构成宽度的洞穴,已知洞顶 si 和洞底 pi 的高度,要求储存尽量多的燃料。 解法:O(n),分别从1到N和从N到1扫一遍,调整每个片段合法的最大高度,求出答案。
阅读全文
摘要:题意:有T组数据,N个点,M条边,每条边有一定的花费。问最小生成树和次小生成树的权值。 解法:具体请见 关于生成树的拓展 {附【转】最小瓶颈路与次小生成树}(图论--生成树)
阅读全文
摘要:题意:有M只猴子,他们的最大跳跃距离为Ai。树林中有N棵树露出了水面,给出了它们的坐标。问有多少只猴子能在这个地区露出水面的所有树冠上觅食。 解法:由于要尽量多的猴子能到达所有树冠,便用Kruskal求一次MST最小生成树,也就得到了最大边最小的最小瓶颈生成树。在用这个最大边权计算合法的猴子树。 P
阅读全文
摘要:题意:平面上有N个石头,给出坐标。一只青蛙从1号石头跳到2号石头,使路径上的最长便最短。输出这个值。(2≤N≤200) 解法:最小瓶颈树。而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Floyd算法,利用DP思想枚举出所有情况,O(n3)。具体关于Floyd算法的一些解释得等我过几天写一
阅读全文
摘要:题意:有N个方块,M个操作{“C x”:查询方块x上的方块数;“M x y”:移动方块x所在的整个方块堆到方块y所在的整个方块堆之上}。输出相应的答案。 解法:带权并查集。每堆方块作为一个集合,维护3个数组:fa[x]表示x方块所在堆的最顶部的方块;d[x]表示x方块所在堆的最底部的方块;f[x]表
阅读全文
摘要:题意:假设一种音乐播放器有一个乱序的功能,设定每播放S首歌为一个周期,随机播放编号为1~S的歌曲。现在给一个长度为N的部分播放记录,请统计下次随机排序所发生的时间的可能性种数。(1≤S,N≤100000) 解法:由“连续的S个数”想到滑动窗口。O(n)循环一次,每次判断一个周期的[i-S+1,i]是
阅读全文
摘要:模版题为【poj 1287】Networking。 题意我就不说了,我就想简单讲一下Kruskal和Prim算法。卡Kruskal的题似乎几乎为0。(●-`o´-)ノ 假设有一个N个点的连通图,有M条边(不定向),求MST(Minimal Spanning Tree)最小生成树的值。 1.Krusk
阅读全文
摘要:题意:平面上有N个点(1≤N≤1000),若要新建边,费用是2点的欧几里德距离的平方。另外还有Q个套餐,每个套餐里的点互相联通,总费用为Ci。问让所有N个点连通的最小费用。(2组数据的输出之间要求有换行) 解法:利用二进制枚举套餐,时间复杂度是O(2QN2+N2logN)。关于时间复杂度,枚举:二进
阅读全文
摘要:P.S.我最近挖了好多坑啊~U·ェ·U 先讲一下蓝书上提到的关于Spanning Tree 生成树的内容。 2个性质:切割(连X-Y的边权最小的边必被生成树包含)、回路(任意回路/环上的边权最大的边必不被生成树包含)。 增量最小生成树:N点的空图上依次加入一共M条边,求每加入一条的MST最小生成树权
阅读全文
摘要:题意:给一个N(N<=100)个点的联通图(无自环和平行边),求苗条度(最大边-最小边的值)尽量小的生成树。 解法:枚举+Kruskal。先从小到大排序边,枚举选择的最小的边。
阅读全文
摘要:题意:如题,用表达式树来表示一个表达式,且消除公共的部分,即用编号表示。编号 K 定义为表达式第 K 个出现的字符串。 解法:先构造表达式树,给每棵子树用(string,left_son,right_son)-->(哈希值,...,...)编号。由于最多出现4个小写字母,所以可以用27进制数表示,同
阅读全文
摘要:题意:环形跑道上有N个加油站,编号为1~N。第 i 个加油站可以加油Ai加仑,从加油站 i 开到下一站需要Bi加仑汽油。问可作为起点走完一圈后回到起点的最小加油站编号。 解法:我们把每个加油站的Ai,Bi合并,把Ai-Bi看成N个点的权Ci,表示经过 i 的剩余油量。可知可通过第 i 个加油站就是s
阅读全文
摘要:题意:初始1个红气球,每小时后,1个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球。问经过N小时后,第L~R行一共有多少个红气球。 解法:问行数就定义f[i][j]表示 i 小时后前 j 行的红气球数。分情况讨论后就可得出递推方程。 注意——1.数组开不小就时间换空间,递归替代递推
阅读全文
摘要:题意:有N个数,每次选2个数合并为1个数,操作的开销就是这个新的数。直到只剩下1个数,问最小总开销。 解法:合并的操作可以转化为二叉树上的操作【建模】,每次选两棵根树合并成一棵新树,新树的根权值等于两棵合并前树的根权值和(也与Huffman编码的建立过程类似,选权值最小的两棵树)。 这样总开销就是除
阅读全文

浙公网安备 33010602011771号