摘要: 题意: 说的是一个电子云的三种状态,但是这不重要。 简单来说,就是在一个升序的序列中找三个数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 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个字符串,要求任意两个相同的字母不能相同,问这个字符串是否能有两种或者两种以上的表现形式。 思路: 简单判断一下: 1.问号在端点; 2.连续两个问号或者以上; 3.一个问号两端的字母是相同的。 不过坑点就是给出的字符串没有问号或者给出的字符串本身就是不满足条件的。 代码: 阅读全文
posted @ 2018-04-12 18:24 qrfkickit 阅读(146) 评论(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 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出A和B,要求构造出一个具有A个白色连通块和B个黑色连通块的矩阵。 这个矩阵的长和宽最多为100. 思路: 试想如果横着每个点同类的点隔着一个不同的点,竖着每个同类的点隔着一个不同的点,那么就可以很简单的构造了。。。 代码: 阅读全文
posted @ 2018-04-12 18:21 qrfkickit 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出横坐标上一系列的点,一个人从0出发按照下标顺序访问每一个点,再回到0点。 问每次如果去掉一个点,那么访问的距离变为多少。 思路: 去掉这个点,那么就减去这个点到上一点到这一点的距离,减去这个点到下一个点的距离,加上上一个点到下一个点的距离。。。。 代码: 阅读全文
posted @ 2018-04-12 18:20 qrfkickit 阅读(223) 评论(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 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 题意: 有n个红色的点和n个蓝色的点,如果红色的点的横坐标和纵坐标分别比蓝色的点的横坐标和纵坐标小,那么这两个点就可以成为一对友好的点。 问最多可以形成多少对友好的点。 思路: 裸的二分图匹配,对于满足条件的两个点连边。 wa了两发,板子错了,还是得用果苣的!。 代码: 阅读全文
posted @ 2018-04-12 18:18 qrfkickit 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意: 有两种出行方式,一种是经济舱,一种是商务舱,商务舱比经济舱更加便捷。 一个人出行,想尽快达到目的地,但是他的钱不够,因此只能坐经济舱,但是幸运的是他有一张商务舱的票,意味着他可以选择坐一次商务舱,或者不坐(如果这样更省时间)。 给出地点数,起点,终点以及若干经济舱的线路和若干商务舱的线路,要 阅读全文
posted @ 2018-04-12 17:47 qrfkickit 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个人从公司回家,他可以从A走到B如果从存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度。 问这样的路径有多少条。 思路: 题意并不好理解,存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度,从这个条件可以推出只要满足B到家的最短路小于从A到家的最短路, 阅读全文
posted @ 2018-04-12 17:46 qrfkickit 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个无向图,定义这个无向图的花费是 其中path(i,j),是i到j的最短路。 去掉其中一条边之后,花费为c’,问c’ – c的最大值,输出c和c’。 思路: 枚举每条边,每次把这条边去掉,然后以每个点为起点,跑一次Dijkstra,再计算总花费。 这样的复杂度为O(mn^2log(n) 阅读全文
posted @ 2018-04-12 17:45 qrfkickit 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 题意: 一群动物想从动物园逃离,从一个图的左上角出发,只有到达右下角才能彻底逃离。 动物园的管理者为了防止他们逃跑,安排了若干人在路上防守。 现在问最少需要花多少人能够封锁动物逃跑的路线。 思路: 简单画一画知道,就是找一个边的集合把整个图分成两个部分,且要求这些边的权值最小,这是著名的最小割问题( 阅读全文
posted @ 2018-04-12 17:42 qrfkickit 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题意: 一开始题读错了,囧,看了题解才发现,汗! 有一对夫妻要结婚,他们坐在一条长凳上,这条长方形长凳有左右两端(自行脑补),来了若干对夫妻参加他们的婚礼。 规定一对夫妻中的两个人不能坐在同一端。 新娘因为头饰太复杂所以看不到跟她坐在同一侧的人。 同时这些夫妻中有某些人存在不纯洁关系,新娘不希望同时 阅读全文
posted @ 2018-04-12 17:39 qrfkickit 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一些部长需要对某些账单进行投票。 一个部长最多对4个账单进行投票,且每票对一个账单通过,要么否决。 问是否存在一个方案使得所有部长有超过半数的投票被通过,如果有,那么说明哪些账单的决定是明确的,哪些是不明确的;否则说明不可能。 思路: 2-SAT。 一开始觉得这是一个k-SAT问题,但是因 阅读全文
posted @ 2018-04-12 17:38 qrfkickit 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题意: 一座飞机场要降落飞机,每架飞机有两种降落方式:早降落和晚降落。 现在要安排飞机的降落使得两个飞机降落时间的最小值最大。 输出这个最小值。 思路: 最小值最大化,可以想到答案需要二分。 然后就是如何判断一个时间是否满足条件。一个飞机要么早降落,要么晚降落,所以就是一个为真,另一个一定为假,这就 阅读全文
posted @ 2018-04-12 17:36 qrfkickit 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题意: 现在要安排一些宇航员去星球勘探。有3个星球,分别是J第一大的月亮A,J第二大的月亮B,S第一大的月亮C。 规定年轻的宇航员不能去A,年长的宇航员不能去B,C任何人都可以去。 现在有一些宇航员之间有矛盾,他们不能去相同的星球。 现在问可否安排出这样的方案满足条件,如果有,那么就输出每个宇航员去 阅读全文
posted @ 2018-04-12 17:35 qrfkickit 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题意: 有若干个观看者,要对节目进行投票,每张票一定让一直猫留下,一只狗下场,或者一只狗留下,一只猫下场。 如果某个观看者希望留下的动物下场了,或者希望下场的动物留下了,那么他就会离开。 给出若干个投票信息,求出能够留下的人的最大值。 思路: 假设此时有两个人有矛盾,那么一定是其中一个人希望留下的, 阅读全文
posted @ 2018-04-12 17:28 qrfkickit 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个n * n的棋盘上放着n个棋子,现在要求把这n个棋子用最少的步数移到同一条直线上,即同一列同一行或者同一对角线(两条)。输出最少的步数(只能往四个方向移动,即正东,正西,正南,正北)。 思路: 每个棋子唯一对应一个格子,每个棋子不能在同一个格子,那么就相当于一个二分图(强行二分图)。 因 阅读全文
posted @ 2018-04-12 17:26 qrfkickit 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个平面上有n个黑色的点,n个白色的点,要求黑色的点与白色点之间一一配对,且线段之间不相交。 思路: 线段不相交并不好处理,想了很久想不出,所以看了蓝书的讲解。 一个很明显的结论是,不相交的线段一定比相交的线段短,如图:一个较为直观的例子。 由于点之间一一对应,所以肯定用二分图匹配,然后要使 阅读全文
posted @ 2018-04-12 17:25 qrfkickit 阅读(214) 评论(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 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个r * c的矩阵,某些格子中有坏蛋,一次操作可以灭掉一行或者一列上的全部坏蛋,问最少多少次操作可以灭掉所有的坏蛋并且输出每次的操作。 思路: 把每一个点拆成行与列两个点,然后两个点之间连边,就形成了一个二分图。用最少的操作去消灭所有的坏蛋,就是用最少的点去覆盖所有的边,转化成了二分图 阅读全文
posted @ 2018-04-12 17:22 qrfkickit 阅读(187) 评论(0) 推荐(0) 编辑