题目链接:http://codeforces.com/contest/1133
题意:给你个起点和终点,让你输出他们的中间点
思想: 模拟,考虑下小时差奇偶,讨论下即可。
B 题:Preparation for International Women's Day
题意: n个数,问你有多少对能够是k的倍数。
思想:%k之后讨论即可
C 题 :Balanced Team
题意: 给你n个数,问你最大的一个子集保证子集中最大和最小差值不超过5,问你子集大小。
思想:排序之后l ,r 双指针即可。
D 题 :Zero Quantity Maximization
题意:给你n个ai,bi,问你满足 问你产生的数组C中0的个数最多是多少。
思想:可以ci=0的前提下 d = -bi/ai 转变成求 d 出现的次数最多,对于ai bi GCD 求后放map即可
题意 : n个人分成k组,问你每一组最少1个人的情况下而且一个组之内最大和最小值的差值不超过5,问k组最多有多少人
思想 : DP dp[i][j]代表从1-i中已经用了j个分组的人数
dp[i][j] = max(dp[i-1][j],dp[pos][j-1]+i-pos+1) pos 就是lower_bound(a+1,a+1+n)-a-1 出来的位置下标
代码连接 : http://codeforces.com/contest/1133/submission/51073082
F1题 Spanning Tree with Maximum Degree
题意:给你一个无向图,让你求一颗生成树,根节点的度最大。
思想 : 直接找度最大的点,然后dfs输出树即可。
F2题 Spanning Tree with One Fixed Degree
题意: 给你一个无向图,然后问你1那个点最后的度为k然后这图变成一颗生成树可不可行,可行输出任何一种方案
思想:刚开始判断1的那个点是否度为k 小于k 肯定no, 如果大于k我们思考去掉一些连接1的边是否可以构成生成树。
我们先将1出去,其他的点并查集求出来联通块,然后在让1和原来跟它连接的点去连接,看看最少1需要和几个联通块建边,如果建边的数量还是大于k也是No,如果小于等于的就是yes,因为本来就大于k 现在虽然小于k了 说明有一部分连接1的自我成块了,只需要从里面抽出来一部分即可。跟1连接的节点中存在的块<=k,先将这些点都连接上,然后再去遍历除去这些之后原本和1连接的点,只要在连接k-块数即可,然后遍历所有节点加入联通块即可。
代码连接 : http://codeforces.com/contest/1133/submission/51074870