随笔分类 -  ACM-思维

摘要:题意: 给出一个n,现在有2的n次方个球队。 第一轮,1和2比,3和4比,5和6比。。。。 第二轮,先把胜出的按照序号从小到大排序,然后第一个和第二个比,第三个和第四个比。。。。 。。。。。 问那个队伍获得冠军的期望最大。 思路: 求概率,那么就顺序递推dp。 显然,比赛一共只有n轮,而且每一个队伍 阅读全文
posted @ 2018-05-08 02:20 qrfkickit 阅读(215) 评论(0) 推荐(0)
摘要:题意: 有n个房间,这n个房间通过n-1条边相连,形如一棵树。 一个人走进一个房间,有ki概率被杀死,在1号房间复活;有ei概率逃走。 问逃走经过的边数的期望时多少。 思路: 概率dp。借鉴了这位前辈的思路:https://blog.csdn.net/morgan_xww/article/detai 阅读全文
posted @ 2018-05-07 21:49 qrfkickit 阅读(186) 评论(0) 推荐(0)
摘要:题意: 一个完全图,有n个点,其中m条边是权值为a的无向边,其它是权值为b的无向边,问从1到n的最短路。 思路: 首先判断1和n被哪种边连通。 如果是被a连通,那么就需要全部走b的边到达n,选择最小的; 被b连通,需要走全部为a的边到达n,选择最小的。 第二种情况,用输入的边跑dijkstra; 但 阅读全文
posted @ 2018-05-07 13:33 qrfkickit 阅读(213) 评论(0) 推荐(0)
摘要:题意: 给出n个数,问做多可以找到多少对数字A,B,使得A xor B > max(A,B)。 思路: 感谢mzjj教本弱智。 对于一个数,只考虑小于它的数字。 假设对于一个数字x 11001001,对于从最高位开始的连续的1,满足条件的数y的这位一定不能为1,从碰到的第一位0开始:这一位就可以是1 阅读全文
posted @ 2018-05-07 01:39 qrfkickit 阅读(160) 评论(0) 推荐(0)
摘要:题意: 求一个数组的所有连续子串中不同的数字的和。 思路: 考虑每一个数字对于最终结果的贡献。 假设dp[i]表示以a[i]结尾的串的和,那么有dp[i] = dp[i-1] + a[i] * k。 这里的k,如果当前的a[i]没有在前面出现过,那么对结果的贡献肯定是k = i次,因为以它结尾的字串 阅读全文
posted @ 2018-05-06 22:29 qrfkickit 阅读(167) 评论(0) 推荐(0)
摘要:题意: 有4堆糖,每堆有n个,每次从某一堆的堆顶拿一个放进篮子里,如果篮子里有2个颜色相同的糖果,那么就可以放进袋子里。 当篮子里有5个糖果并且没有相同颜色的糖果时,这个时候就不能再拿了。 问最多可以拿多少对颜色相同的糖果。 思路: 记忆化搜索。 设dp[x][y][z][w]表示第一堆拿走了x个, 阅读全文
posted @ 2018-05-05 23:14 qrfkickit 阅读(143) 评论(0) 推荐(0)
摘要:题意: 给出一个数组,计算所有对于1 <= i < j <= n,ai + aj的进位次数的总和。 思路: 一开始其实是卡在了,i只能与i之后的数字相加 == 。 转换一下,i之前的数字一定会与i相加,i之后的数字也一定会与i相加,所以对于数组中的所有数字,两两之间一定会加一次。 有个很显然的结论, 阅读全文
posted @ 2018-05-05 18:33 qrfkickit 阅读(177) 评论(0) 推荐(0)
摘要:题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库。 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k。 雇佣一个人的花费也是a。 如果一个仓库没有被人托管,那么这个仓库的安全值为0。 总安全值定义为所有仓库安全值的最小值。 现在给出人和仓库的信 阅读全文
posted @ 2018-05-05 01:12 qrfkickit 阅读(168) 评论(0) 推荐(0)
摘要:题意: 给出n和k,求出长度为n的不包含长度大于等于k的回文串的01字符串的个数。 思路: 如果一个字符串包含长度为k的回文串,那么它肯定包含长度为k-1的回文串,所以考虑第i位的时候,只要前缀中不包含长度为k的回文串,就只需要考虑这一位使其满足条件,所以就可以进行递推dp了。 设dp[i][j]为 阅读全文
posted @ 2018-05-04 00:43 qrfkickit 阅读(398) 评论(0) 推荐(0)
摘要:题意: 有一个单行道,两个方向都有车在等待。给出每个车的方向以及到达的时间以及走完这段路所需要的时间。 为了防止车祸,同向两车通过任一点的时间间隔不得小于10s。 求最后一辆车离开时刻的最小值。 思路: 这题最坑的就是,车可以降低速度。provided it is not slowed down b 阅读全文
posted @ 2018-05-02 21:34 qrfkickit 阅读(437) 评论(0) 推荐(0)
摘要:题意: n个城市,m条双向路径。 从a城市到b城市,有两种付费方法: 1.在c城市预先付费,前提是已经到达了c城市; 2.到了b城市之后,在b付费。 给出路径以及付费信息,求出从1到n的最少花费,或判断从1无法到达n。 思路: 状态压缩dp,每次更新的时候,更新两次,第一次更新未到达的城市,第二次更 阅读全文
posted @ 2018-04-17 14:45 qrfkickit 阅读(242) 评论(0) 推荐(0)
摘要:题意: 定义一个最优哈密顿回路如果把如下描述的值最大化: 有n个城市。一个哈密顿回路C1C2..Cn的值由3个部分组成: 1.这个路径上每个岛的值Vi之和; 2.这个路径上每条边Vi*Vi+1之和; 3.如果路径上连续的三个岛屿CiCi+1Ci+2之间两两互相连通,那么就加上Vi*Vi+1*Vi+2 阅读全文
posted @ 2018-04-17 00:48 qrfkickit 阅读(161) 评论(0) 推荐(0)
摘要:题意: 有n个城市,一个人选择一个城市开始,游历其它城市,但是他不能到一个城市超过两次。 问是否能游历完这些城市,以及最少的花费。 思路: 一直读错题意,觉得是二进制状压,囧。 不超过两次,那么就是3进制状态压缩,预先把3的进制预处理出来,之后按照二进制同样的处理方法就行了。 还要先把某个数的3进制 阅读全文
posted @ 2018-04-17 00:25 qrfkickit 阅读(187) 评论(0) 推荐(0)
摘要:题意: 给出一个数列,要求找出一个子序列,长度为2 * n + 1。 要求这个子序列的前n + 1个数为严格递增的,后n + 1个数为严格递减的。 求最长的这样一个子序列。 思路: 首先求出以每一个数结尾的最长上升子序列(从左到右)的长度inc和以每一个数结尾的最长上升子序列(从右到左)的长度dnc 阅读全文
posted @ 2018-04-16 23:54 qrfkickit 阅读(163) 评论(0) 推荐(0)
摘要:题意: 中文题意,略。 思路: 一支炮兵部队可以攻击的范围是两格,所以当前行的状态只和前两行的状态有关。 所以就枚举当前行,前一行和前两行的状态,如果用二进制枚举,2^M的三次方,M最大为10,铁定TLE。 其实状态并没有想的那么多,因为隔两格才可以放一个,所以其实真的有效的状态不会超过100个。 阅读全文
posted @ 2018-04-16 23:47 qrfkickit 阅读(148) 评论(0) 推荐(0)
摘要:题意: 给出若干种货物及其数量以及价格,然后给出一些优惠信息,一些货物组合在一起的价格一定比它们的原价加起来要低。 现在买到这些货物最少的钱(不能增加货物,即使钱会更少)。 思路: 最多有5种货物,每种货物最多5个。 那么就可以考虑压缩状态,6进制的状态压缩,这样就可以表示每种货物的状态。 然后,对 阅读全文
posted @ 2018-04-14 20:10 qrfkickit 阅读(418) 评论(0) 推荐(0)
摘要:题意: 说的是一个电子云的三种状态,但是这不重要。 简单来说,就是在一个升序的序列中找三个数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 阅读(297) 评论(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 阅读(251) 评论(0) 推荐(0)
摘要:题意: 给出A和B,要求构造出一个具有A个白色连通块和B个黑色连通块的矩阵。 这个矩阵的长和宽最多为100. 思路: 试想如果横着每个点同类的点隔着一个不同的点,竖着每个同类的点隔着一个不同的点,那么就可以很简单的构造了。。。 代码: 阅读全文
posted @ 2018-04-12 18:21 qrfkickit 阅读(286) 评论(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 阅读(262) 评论(0) 推荐(0)