随笔分类 -  OJ -- CodeForces

摘要:题目大意:给你一个棋盘,你需要控制棋子依次经过编号为1~n的所有点,棋子的可以是车,马,象,都依照国际象棋的行棋方式,每走一步消耗1单位时间,但每次更换棋子都需要额外1单位时间,求经过所有点需要的最少时间 ,如果多种方案需要的最少时间相同,输出更换棋子次数最少的那个 有的机房老人用了记忆化搜索,但写 阅读全文
posted @ 2018-11-02 09:17 guapisolo 阅读(298) 评论(0) 推荐(0)
摘要:题目大意:给你$n$个箱子,每个箱子里有$a_{i}$个花,你最多取$s$个花,求所有取花的方案,$n<=20$,$s<=1e14$,$a_{i}<=1e12$ 容斥入门题目 把取花想象成往箱子里放花,不能超过箱子上限 $n$很小,考虑状压 如果去掉$a_{i}$的限制,我们取物品的方案数是$C_{ 阅读全文
posted @ 2018-10-31 19:37 guapisolo 阅读(297) 评论(1) 推荐(0)
摘要:题目大意:给你一个边权为$1$的无向图,构造出所有$1$为根的最短路树并输出 性质:单源最短路树上每个点到根的路径 ,一定是这个点到根的最短路之一 边权为$1$,$bfs$出单源最短路,然后构建最短路树即可 代码实现需要思考 可以用$vector$记录最短路树中,每个点可能的父亲,对于合法父亲数量$ 阅读全文
posted @ 2018-10-31 08:03 guapisolo 阅读(348) 评论(0) 推荐(0)
摘要:题目大意:给你一棵边权为1的树,让你加入一些边,使得根节点(1号节点)到其他节点的最短距离不大于2 并没有想到贪心...... 正解的贪心思路是这样的 用一个堆维护当前距离最远的点,然后把根节点和它的父节点连起来 这样,父节点周围一圈的节点到根的距离都不大于2,把这些节点都从堆里删除 实际操作的时候 阅读全文
posted @ 2018-10-24 13:02 guapisolo 阅读(286) 评论(0) 推荐(1)
摘要:题目大意:给你一个有向连通图,让你找出一个点集,保证点集内的点之间没有直接连边,且集合中存在一点,到一个 非点集中的点的距离小于等于2 思路很清奇 首先编号从小到大遍历每个点,如果这个点没有被访问过,把它加入集合中,再把和它的出边连接的点都标记为访问过, 如此做,会发现集合内的点到集合外的点距离最大 阅读全文
posted @ 2018-10-24 10:06 guapisolo 阅读(227) 评论(0) 推荐(0)
摘要:题目大意:你可以在第$ai$天或者第$bi$天进行第$i$场考试,每天最多进行一场考试,求把所有考试都考完的最早结束时间 由于天数可能很大,需要离散 把问题抽象成一棵树,每个点最多被"分配"一条边,现在要删点 画画图可以发现 如果一个联通块是一棵树,那么可以删去至多一个点 如果一个联通块是一个单环树 阅读全文
posted @ 2018-10-24 07:57 guapisolo 阅读(178) 评论(0) 推荐(0)
摘要:题目大意:一共有n个人,每天早上会有两个人成为朋友,朋友关系不具有传递性,晚上,它们会组织旅游,如果一个人去旅游,那么他不少于$k$个朋友也要和他去旅游,求每天的最大旅游人数 一开始并没有想到反向建图,并查集搞了好久也没出解,看了题解的思路,大概是这样的 转化问题,反向建图,把正序往图里建边换成每次 阅读全文
posted @ 2018-10-23 20:32 guapisolo 阅读(324) 评论(0) 推荐(0)
摘要:题目大意:让你构造一个括号序列,括号匹配的方式类似于栈,给出从左数每个括号 到和它匹配的右括号的 最小和最大距离,让你输出一个合法括号序列 看错题了以为是二分图,然后写了搜索 贪心发现如果距离往小了填,不会影响结果 括号必须套完整的括号,所以距离必须是2的整数倍+1 如果一个括号匹配上了,那么两个括 阅读全文
posted @ 2018-10-23 08:31 guapisolo 阅读(443) 评论(0) 推荐(0)
摘要:题目大意:给你一棵树,让你对叶节点分组,保证每组中,任意两个叶节点之间的距离不大于K,求最小的组数 手动yy的贪心竟然对的 对于每个节点,维护一个$ma[i]$,表示在$i$节点的子树内 未被分组的叶节点到$i$节点的最长距离 那么,对于每个节点,把它的子节点按照$ma[i]$排序,那么如果这个点的 阅读全文
posted @ 2018-10-18 19:49 guapisolo 阅读(155) 评论(0) 推荐(0)
摘要:题目大意:一个无向连通图,n个点m条边,n<=1e5,m-n<=20,q个询问,q<=1e5,求u和v之间的最短路 发现边只比点多20个,所以可以把图当成一棵树,求出图的最小生成树 对于一个询问,最短路径可能是两个点的树上最小距离,但最短路径也有可能经过未被加入最小生成树的边 那怎么办呢? 发现m- 阅读全文
posted @ 2018-10-18 17:19 guapisolo 阅读(178) 评论(0) 推荐(0)
摘要:题目大意:给你一个序列(n<=35000),最多分不大于m块(m<=50),求每个块内不同元素的数量之和的最大值 考试的时候第一眼建图,没建出来,第二眼贪心 ,被自己hack掉了,又随手写了个dp方程,感觉可以用splay维护,发现有区间操作并可取,又发现这个方程只能用线段树维护,然后只剩40min 阅读全文
posted @ 2018-10-04 08:30 guapisolo 阅读(141) 评论(0) 推荐(0)
摘要:题目大意: 给出一个长度为n的序列,构造出一个序列使得它们的位与和为0,求方案数 也就是从序列里面选出一个非空子集使这些数按位与起来为0. 看了好久才明白题解在干嘛,我们先要表示出两两组合位与和为0的所有情况 先hx一下每个数出现的次数,然后我们从遍历 i ,i 是二进制的数位 然后遍历所有的情况, 阅读全文
posted @ 2018-09-24 22:14 guapisolo 阅读(404) 评论(0) 推荐(0)
摘要:题目大意:甲和乙玩游戏,甲给出n(n<=50)个等长的字符串(len<=20),然后甲选出其中一个字符串,乙随机询问该字符串某一位的字符(不会重复询问一个位置),求乙能确定该串是哪个字符串的询问次数的期望值 这题不看题解好难想......(感谢zhx和zhx两位大佬的题解) len很小,考虑状压DP 阅读全文
posted @ 2018-09-24 22:13 guapisolo 阅读(269) 评论(0) 推荐(0)
摘要:题目大意:给你一个序列,你可以在序列中任选一个子序列,求子序列每一项的积是一个平方数的方案数。 1<=a[i]<=70 因为任何一个大于2的数都可以表示成几个质数的幂的乘积 所以我们预处理70以内的质数,把它作为二进制状压的状态,每个在序列中出现数Hash一下,组合数推一下 所以把奇次幂的状态表示为 阅读全文
posted @ 2018-09-24 22:12 guapisolo 阅读(269) 评论(0) 推荐(0)