摘要: 题意: 说的是一个电子云的三种状态,但是这不重要。 简单来说,就是在一个升序的序列中找三个数x,y,z,x和z的值之差不超过u,然后使得(z – y) / (z – x)最大。 思路: 使得(z – y)/(z – x)最大,那么y与x要尽量接近,并且z – x尽量大,一个比较显然的例子是8/9大于 阅读全文
posted @ 2018-04-12 18:25 qrfkickit 阅读(299) 评论(0) 推荐(0)
摘要: 题意: 给出一个字符串,要求任意两个相同的字母不能相同,问这个字符串是否能有两种或者两种以上的表现形式。 思路: 简单判断一下: 1.问号在端点; 2.连续两个问号或者以上; 3.一个问号两端的字母是相同的。 不过坑点就是给出的字符串没有问号或者给出的字符串本身就是不满足条件的。 代码: 阅读全文
posted @ 2018-04-12 18:24 qrfkickit 阅读(156) 评论(0) 推荐(0)
摘要: 题意: A和B在玩一个游戏,首先有一个X0 >= 3,之后选择一个小于X0的质数p,然后在找一个最小的X1 >= X0,并且p可以整除X1;之后再选择一个小于X1的质数p,然后再找一个最小的X2 >= X1,并且p可以整除X2。。。。 总之,每次会选择一个p小于Xi-1,然后找一个最小的Xi >= 阅读全文
posted @ 2018-04-12 18:22 qrfkickit 阅读(253) 评论(0) 推荐(0)
摘要: 题意: 给出A和B,要求构造出一个具有A个白色连通块和B个黑色连通块的矩阵。 这个矩阵的长和宽最多为100. 思路: 试想如果横着每个点同类的点隔着一个不同的点,竖着每个同类的点隔着一个不同的点,那么就可以很简单的构造了。。。 代码: 阅读全文
posted @ 2018-04-12 18:21 qrfkickit 阅读(287) 评论(0) 推荐(0)
摘要: 题意: 给出横坐标上一系列的点,一个人从0出发按照下标顺序访问每一个点,再回到0点。 问每次如果去掉一个点,那么访问的距离变为多少。 思路: 去掉这个点,那么就减去这个点到上一点到这一点的距离,减去这个点到下一个点的距离,加上上一个点到下一个点的距离。。。。 代码: 阅读全文
posted @ 2018-04-12 18:20 qrfkickit 阅读(231) 评论(0) 推荐(0)
摘要: 题意: 给出两个长度N相同的整数序列A和B,有N^2种方式从A中选择一个数Ai,从B中选择一个数Bj,让两个数相加,求这N^2个数的XOR,即异或。 思路: 暴力的求显然是会超时的,因为是异或,就考虑在最后的结果中以二进制表示每一位是0还是1。 在计算第i位是否为1的时候,显然不需要考虑更高位的影响 阅读全文
posted @ 2018-04-12 18:19 qrfkickit 阅读(271) 评论(0) 推荐(0)
摘要: 题意: 有n个红色的点和n个蓝色的点,如果红色的点的横坐标和纵坐标分别比蓝色的点的横坐标和纵坐标小,那么这两个点就可以成为一对友好的点。 问最多可以形成多少对友好的点。 思路: 裸的二分图匹配,对于满足条件的两个点连边。 wa了两发,板子错了,还是得用果苣的!。 代码: 阅读全文
posted @ 2018-04-12 18:18 qrfkickit 阅读(294) 评论(0) 推荐(0)
摘要: 题意: 有两种出行方式,一种是经济舱,一种是商务舱,商务舱比经济舱更加便捷。 一个人出行,想尽快达到目的地,但是他的钱不够,因此只能坐经济舱,但是幸运的是他有一张商务舱的票,意味着他可以选择坐一次商务舱,或者不坐(如果这样更省时间)。 给出地点数,起点,终点以及若干经济舱的线路和若干商务舱的线路,要 阅读全文
posted @ 2018-04-12 17:47 qrfkickit 阅读(284) 评论(0) 推荐(0)
摘要: 题意: 一个人从公司回家,他可以从A走到B如果从存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度。 问这样的路径有多少条。 思路: 题意并不好理解,存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度,从这个条件可以推出只要满足B到家的最短路小于从A到家的最短路, 阅读全文
posted @ 2018-04-12 17:46 qrfkickit 阅读(242) 评论(0) 推荐(0)
摘要: 题意: 给出一个无向图,定义这个无向图的花费是 其中path(i,j),是i到j的最短路。 去掉其中一条边之后,花费为c’,问c’ – c的最大值,输出c和c’。 思路: 枚举每条边,每次把这条边去掉,然后以每个点为起点,跑一次Dijkstra,再计算总花费。 这样的复杂度为O(mn^2log(n) 阅读全文
posted @ 2018-04-12 17:45 qrfkickit 阅读(266) 评论(0) 推荐(0)
摘要: 题意: 一群动物想从动物园逃离,从一个图的左上角出发,只有到达右下角才能彻底逃离。 动物园的管理者为了防止他们逃跑,安排了若干人在路上防守。 现在问最少需要花多少人能够封锁动物逃跑的路线。 思路: 简单画一画知道,就是找一个边的集合把整个图分成两个部分,且要求这些边的权值最小,这是著名的最小割问题( 阅读全文
posted @ 2018-04-12 17:42 qrfkickit 阅读(292) 评论(0) 推荐(0)
摘要: 题意: 一开始题读错了,囧,看了题解才发现,汗! 有一对夫妻要结婚,他们坐在一条长凳上,这条长方形长凳有左右两端(自行脑补),来了若干对夫妻参加他们的婚礼。 规定一对夫妻中的两个人不能坐在同一端。 新娘因为头饰太复杂所以看不到跟她坐在同一侧的人。 同时这些夫妻中有某些人存在不纯洁关系,新娘不希望同时 阅读全文
posted @ 2018-04-12 17:39 qrfkickit 阅读(196) 评论(0) 推荐(0)
摘要: 题意: 有一些部长需要对某些账单进行投票。 一个部长最多对4个账单进行投票,且每票对一个账单通过,要么否决。 问是否存在一个方案使得所有部长有超过半数的投票被通过,如果有,那么说明哪些账单的决定是明确的,哪些是不明确的;否则说明不可能。 思路: 2-SAT。 一开始觉得这是一个k-SAT问题,但是因 阅读全文
posted @ 2018-04-12 17:38 qrfkickit 阅读(289) 评论(0) 推荐(0)
摘要: 题意: 一座飞机场要降落飞机,每架飞机有两种降落方式:早降落和晚降落。 现在要安排飞机的降落使得两个飞机降落时间的最小值最大。 输出这个最小值。 思路: 最小值最大化,可以想到答案需要二分。 然后就是如何判断一个时间是否满足条件。一个飞机要么早降落,要么晚降落,所以就是一个为真,另一个一定为假,这就 阅读全文
posted @ 2018-04-12 17:36 qrfkickit 阅读(173) 评论(0) 推荐(0)
摘要: 题意: 现在要安排一些宇航员去星球勘探。有3个星球,分别是J第一大的月亮A,J第二大的月亮B,S第一大的月亮C。 规定年轻的宇航员不能去A,年长的宇航员不能去B,C任何人都可以去。 现在有一些宇航员之间有矛盾,他们不能去相同的星球。 现在问可否安排出这样的方案满足条件,如果有,那么就输出每个宇航员去 阅读全文
posted @ 2018-04-12 17:35 qrfkickit 阅读(208) 评论(0) 推荐(0)
摘要: 题意: 有若干个观看者,要对节目进行投票,每张票一定让一直猫留下,一只狗下场,或者一只狗留下,一只猫下场。 如果某个观看者希望留下的动物下场了,或者希望下场的动物留下了,那么他就会离开。 给出若干个投票信息,求出能够留下的人的最大值。 思路: 假设此时有两个人有矛盾,那么一定是其中一个人希望留下的, 阅读全文
posted @ 2018-04-12 17:28 qrfkickit 阅读(226) 评论(0) 推荐(0)
摘要: 题意: 一个n * n的棋盘上放着n个棋子,现在要求把这n个棋子用最少的步数移到同一条直线上,即同一列同一行或者同一对角线(两条)。输出最少的步数(只能往四个方向移动,即正东,正西,正南,正北)。 思路: 每个棋子唯一对应一个格子,每个棋子不能在同一个格子,那么就相当于一个二分图(强行二分图)。 因 阅读全文
posted @ 2018-04-12 17:26 qrfkickit 阅读(512) 评论(0) 推荐(0)
摘要: 题意: 一个平面上有n个黑色的点,n个白色的点,要求黑色的点与白色点之间一一配对,且线段之间不相交。 思路: 线段不相交并不好处理,想了很久想不出,所以看了蓝书的讲解。 一个很明显的结论是,不相交的线段一定比相交的线段短,如图:一个较为直观的例子。 由于点之间一一对应,所以肯定用二分图匹配,然后要使 阅读全文
posted @ 2018-04-12 17:25 qrfkickit 阅读(236) 评论(0) 推荐(0)
摘要: 题意: 给出一个n * n的矩阵,要求给每一行和每一列安排一个数字,使得对于每个数字a[i][j],这一行安排的数字row[i]和这一列安排的数字col[j]满足row[i] + col[j] >= a[i][j]。要求使得每一行安排的数字和每一列安排的数字之和最小。输出每一行和每一列安排的数字,再 阅读全文
posted @ 2018-04-12 17:23 qrfkickit 阅读(124) 评论(0) 推荐(0)
摘要: 题意: 给出一个r * c的矩阵,某些格子中有坏蛋,一次操作可以灭掉一行或者一列上的全部坏蛋,问最少多少次操作可以灭掉所有的坏蛋并且输出每次的操作。 思路: 把每一个点拆成行与列两个点,然后两个点之间连边,就形成了一个二分图。用最少的操作去消灭所有的坏蛋,就是用最少的点去覆盖所有的边,转化成了二分图 阅读全文
posted @ 2018-04-12 17:22 qrfkickit 阅读(199) 评论(0) 推荐(0)
摘要: 题意: 有一个老师想组织学生出去旅游,为了避免他们之间有情侣产生,他制定了一系列的条件,满足这些条件之一,那么这些人理论上就不会成为情侣: 身高相差40cm;性别相同;喜欢的音乐风格不同;最喜欢的运动相同。 给出若干个学生的身高,性别,喜欢的音乐风格和喜欢的运动,问最多有多少人可以出去。 思路: 对 阅读全文
posted @ 2018-04-12 17:20 qrfkickit 阅读(170) 评论(0) 推荐(0)
摘要: 题意: 有m个人要坐出租车,每个人给出出发时间,出发地点和目的地(以二维坐标表示),两个地点之间所花的时间计算方式是两点之间的哈密顿距离。现在需要排遣车出去,一辆车每次只能装一个人,如果一辆车在装完一个人A之后,再到达另一个人B的出发地点的时间,比这个人的出发时间至少提前1分钟,那么这个车就可以乘坐 阅读全文
posted @ 2018-04-12 17:19 qrfkickit 阅读(166) 评论(0) 推荐(0)
摘要: 题意: 给出n个点,以及每个点到其他点的有向距离,要求设计线路使得每一个点都在一个环中,如果设计的线路拥有最小值,那么这个线路就是可选的。输出这个最小值或者说明最小线路不存在。 思路: 在DAG的最小路径覆盖中,找到的最大匹配数实际是非终点的点的最大数量(每一个匹配对应一个起点),点数减去这个数量就 阅读全文
posted @ 2018-04-12 17:17 qrfkickit 阅读(245) 评论(0) 推荐(0)
摘要: 题意: 秦始皇要修路使得所有的城市连起来,并且花费最少;有一个人,叫徐福,他可以修一条魔法路,不花费任何的钱与劳动力。 秦始皇想让修路的费用最少,但是徐福想要受益的人最多,所以他们经过协商,决定让 A / B 最大,A代表被魔法路连接的两个城市的人口总数,B代表修的路中非魔法路的总长度。 输出 A 阅读全文
posted @ 2018-04-12 17:14 qrfkickit 阅读(229) 评论(0) 推荐(0)
摘要: 题意: 邦德在逃命!他在一个有N个城市,由M条边连接的道路网中。一条路的危险度被定义为这条路上危险度最大的边的危险度。 现在给出若干个询问,s,t,问从s到t的最小的危险度是多少。 思路: 首先可以证明这条路是固定的,就是最小生成树,证明略。 之后就是计算生成树上两点间的最长边,用prim算法预处理 阅读全文
posted @ 2018-04-12 17:13 qrfkickit 阅读(479) 评论(0) 推荐(0)
摘要: 题意: 有一个网络中心,和许多个城市,网络中心以及城市之间有若干条边,这些边有两个属性,最大带宽和修建费用。 现在要用最多不超过C的费用修建网络,使得每个城市都有网络连接,最大化最小带宽。 带宽限制是,一条边可以接受不大于自己最大值的带宽。 边是有向边,unidirectional。 思路: 最大化 阅读全文
posted @ 2018-04-12 17:11 qrfkickit 阅读(240) 评论(0) 推荐(0)
摘要: 题意: 一棵生成树的苗条度被定义为最长边与最小边的差。 给出一个图,求其中生成树的最小苗条度。 思路: 最开始想用二分,始终想不到二分终止的条件,所以尝试暴力枚举最小边的长度,然后就AC了。 粗略估计最大规模为1e8,用时2873ms,卡着时间过。 一个不明显的优化是枚举输入的每一条边。 代码: 阅读全文
posted @ 2018-04-12 17:10 qrfkickit 阅读(221) 评论(0) 推荐(0)
摘要: 题意: 求最小生成树和次小生成树的总权值。 思路: 第一种做法,适用于规模较小的时候,prim算法进行的时候维护在树中两点之间路径中边的最大值,复杂度O(n^2),枚举边O(m),总复杂度O(n^2); 第二种做法,倍增求lca,预处理复杂度O(nlog(n)),替换的时候log(n),总复杂度为O 阅读全文
posted @ 2018-04-12 17:09 qrfkickit 阅读(181) 评论(0) 推荐(0)
摘要: 题意: 有一个女孩,需要打电话让所有的人知道一个消息,消息可以被每一个知道消息的人传递。 打电话的关系是单向的,每一次电话需要一定的花费。 求出打电话最少的花费或者判断不可能让所有人知道消息。 思路: 最小树形图模板题。 朱刘算法,复杂度O(n^3),n的规模较小。 代码: 阅读全文
posted @ 2018-04-12 17:08 qrfkickit 阅读(259) 评论(0) 推荐(0)
摘要: 题意: 有许多基地,每个基地都有两种收发信号的方式,一种是通过无线电收发机,另一种是通过卫星。两个基地之间可以通过卫星交流不管它们相距多远;但是通过无线电交流,就要求它们的距离不超过D。为了方便布置,节省成本,每个基地的无线电交流的最大距离都相等。给出基地的位置和卫星的数量,求出D,保证两个基地之间 阅读全文
posted @ 2018-04-12 17:06 qrfkickit 阅读(171) 评论(0) 推荐(0)
摘要: 题意: 给出一个图,边是有向的,现在给出一些边的变化的信息(权值大于原本的),问经过这些变换后,MST总权值的期望,假设每次变换的概率是相等的。 思路: 每次变换的概率相等,那么就是求算术平均。 首先求出最小生成树,若变换的边不在最小生成树上,那么就不用管;如果在,那么就需要求变换之后的MST的总权 阅读全文
posted @ 2018-04-12 17:05 qrfkickit 阅读(313) 评论(0) 推荐(0)
摘要: 题意: 一个KTO被定义为一个特殊的连通块,这个连通块满足一个要求,这个连通块中的最短的边大于 与这个连通相连的不属于这个连通块的边中的最大值。 给出一个图,统计KTO里面的点有多少个。(一个点可以属于多个KTO) 如a中有3个KTO,b中有6个KTO。 思路: 因为题目中给出的n最大为5000,那 阅读全文
posted @ 2018-04-12 17:01 qrfkickit 阅读(174) 评论(0) 推荐(0)
摘要: 题意: 给出一个无向图,求一个生成树使得这个生成树的最大边与最小边之差最小,输出这个最小的差值。n的最大值为350。 思路: 这题不看题解想破头也不知道怎么写Orz。 暴力的做法是可以从大到小枚举边作为最小边的权值,求MST,但是复杂度达到了O(n^4),很显然会T。 考虑在kruskal算法加边的 阅读全文
posted @ 2018-04-12 16:57 qrfkickit 阅读(239) 评论(0) 推荐(0)
摘要: 题意: 给出一个数列,现在有一种操作,可以任何一个a[i],用a[i] – a[i+1]和a[i]+a[i+1]替代a[i]和a[i+1]。 问现在需要最少多少次操作,使得整个数列的gcd大于1。 思路: 经过思考后发现,除非所有的数的gcd已经大于1,那么就必须把全部数字变为偶数。 变数字的时候, 阅读全文
posted @ 2018-04-12 16:54 qrfkickit 阅读(193) 评论(0) 推荐(0)
摘要: 题意: 有很多家银行,如果一个上线的银行和另一个上线的银行直接相连,那么称这种关系叫相邻; 如果一个上线的银行和另一个上线的银行通过第三个上线银行间接相连,称这种情况为半相邻。 每个银行一开始是上线的并且有一个初始的防卫力量(可能为负数),一个银行被抢劫之后就会下线并且再也不会上线,与它相邻和半相邻 阅读全文
posted @ 2018-04-12 16:53 qrfkickit 阅读(206) 评论(0) 推荐(0)
摘要: 题意: 给出一个数列,和一种操作,以及两个数x和k。 这个操作有两个步骤: 首先把这个数列按照升序排序,然后把所有奇数位上的数字与x异或。 问执行k次操作之后,这个数列的最大值和最小值是多少。 思路: 由于每个数字异或两次之后会变回本身,所以猜测这个数列有可能会循环,所以就可以暴力计算周期,对于每一 阅读全文
posted @ 2018-04-12 16:51 qrfkickit 阅读(308) 评论(0) 推荐(0)
摘要: 题意: 已知若干种硬币的面值和重量,以及一堆硬币的总重量。 求出可以凑出这堆硬币的最小钱数或者说明不可能。 思路: 完全背包。 定义dp[i][j]表示凑到第i枚硬币,重量为j时可以凑出的最小钱数。 当dp[j+w[i]] == -1时,表示这个状态还没有到过,那么当dp[j] != -1时,才能够 阅读全文
posted @ 2018-04-12 16:46 qrfkickit 阅读(130) 评论(0) 推荐(0)
摘要: 题意: 一个银行有若干不同面值的货币,每个面值有不同的数量,求银行可以凑出最大的小于等于给定金额的钱的数值。 思路: 组合背包裸题,把数量以二进制拆分,就可以凑出从1到k的所有数,时间复杂度降到log(k)。之后再用0,1背包解决。 代码: 阅读全文
posted @ 2018-04-12 16:45 qrfkickit 阅读(136) 评论(0) 推荐(0)
摘要: 题意: 中文题意,略。。。 思路: 第一问,求最长公子序列,模板题。。。 第二问,求最长公共子序列的个数,这个就比较有意思了。 设len[i][j]表示表示第一个串到i位置,第二个串到j位置时的长度。 设lcs[i][j]表示第一个串到i位置,第二个串到j位置时,lcs的个数。 当a[i] == b 阅读全文
posted @ 2018-04-12 16:43 qrfkickit 阅读(340) 评论(0) 推荐(1)
摘要: 题意: 约翰让一些奶牛做家务,每只奶牛都有固定工作的时间段。 现在安排最少的奶牛,使得每一个单位时间内至少有一只奶牛在工作,问是否可行。 思路: 经典的贪心,区间覆盖问题。 把起始时刻0作为当前时刻开始寻找,找到区间左端点小于等于当前时刻+1且区间右端点最大的一个区间,直到下一个区间的左端点大于当前 阅读全文
posted @ 2018-04-12 15:41 qrfkickit 阅读(153) 评论(0) 推荐(0)
摘要: 题意: 在海上有很多的小岛,要建造一些雷达来把所有的小岛都覆盖掉。 雷达只能建造在海岸线上(水平的X轴),且所有雷达的覆盖半径是相同的。 现在问是否可以建造最少的雷达使得所有的小岛都被覆盖。 思路: 首先可以知道,如果一个小岛的纵坐标大于给定的半径,那么就不会存在合理的方案; 对于一个小岛,可以通过 阅读全文
posted @ 2018-04-12 15:39 qrfkickit 阅读(235) 评论(0) 推荐(0)
摘要: 题意: 有若干只奶牛要进食,有进食的开始时间和结束时间。 但是一个位置只能容纳一只奶牛,所以就需要较多的位置。 显然,在一个位置,当一只奶牛进食结束后,另一只奶牛可以去进食。 问最少的位置以及每只奶牛被安排的位置。 思路: 贪心。 用一个优先队列存放奶牛,结束时间早的奶牛先出队列。 将所有奶牛按照开 阅读全文
posted @ 2018-04-12 15:38 qrfkickit 阅读(185) 评论(0) 推荐(0)
摘要: 题意: 一家工厂每个周可以生产无数的酸奶,每周单位酸奶的价格不相同。 有一个无限大的仓库可以存储这些酸奶,可以储存无限久,储存每单位酸奶的价格相同。 每周要向客户供应一定量的酸奶,这些酸奶可以是本周生产的,也可以是以前存储的。 要求把花费最小化。 思路: 由于每周的酸奶可以来自前面任何一个周的生产, 阅读全文
posted @ 2018-04-12 15:37 qrfkickit 阅读(191) 评论(0) 推荐(0)
摘要: 题意: 有一些货物需要装在包裹里,这些包裹是正方形的,并且高度相同,规模分别有1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6。 现在给出每种包裹需要的数量,问最少需要多少个包裹可以装下这些货物。 思路: 需要最少的包裹,那肯定用最大的包裹装,即6 * 6。 首先装6 * 6的 阅读全文
posted @ 2018-04-12 15:36 qrfkickit 阅读(142) 评论(0) 推荐(0)
摘要: 题意: 约翰有一些硬币,这些硬币中的大面值都可以被任何小于它面值的硬币的面值所整除,比如1 5 10 50等。 现在每个面值的硬币有若干个,约翰每周至少要付给他的奶牛的薪酬为C,问约翰最多可以付多少周。 思路: 贪心,一道好题。 首先从大面值的往小面值的加,不能超过C,但是一定要尽量接近C或者等于C 阅读全文
posted @ 2018-04-12 15:35 qrfkickit 阅读(177) 评论(0) 推荐(0)
摘要: 题意: 有一种名为stripie的生物,每次当两个质量为m1 和 m2的这种生物相遇之后,它们会合体成为一个个体,这个个体的质量变为2 * sqrt(m1 * m2)。给出n个生物的质量,问他们相遇之后最后剩下一个个体时,最小的质量是多少,保证不会有超过2个这种生物碰到一起的情况。 思路: 哈夫曼树 阅读全文
posted @ 2018-04-12 15:33 qrfkickit 阅读(200) 评论(0) 推荐(0)
摘要: 题意: 约翰有一个N*M的农场,他想在里面种小麦。 有些格子是不育的,并且两株小麦不能相邻(上下或左右)。 问种植的方案有多少种,一个也不种植也是一种方案。 思路: 非常裸的一道状压dp,但是复杂度把人吓住了。首先枚举当前状态cur,再枚举之前的状态pre,对于每一行都这样做。那么复杂度就是O(n  阅读全文
posted @ 2018-04-12 15:28 qrfkickit 阅读(151) 评论(0) 推荐(0)