08 2018 档案

摘要:题意: 给出一棵n个点的树,每条边有边权。对这个树加边变成一个完全图。新加的边的权值为边上两点在树上的距离。求完全图上任意两点的最大流之和。 题解: 一共有C(n,2)个点对。假设当前求s到t之间的最大流,也就是最小割。那么割完之后会是2个连通块,且连通块内部是完全图。 因为是最小割,所以被割掉的边 阅读全文
posted @ 2018-08-07 01:06 Pneuis 阅读(331) 评论(0) 推荐(0)
摘要:题意: 给出n个区间和m个点(点按顺序给出且强制在线)。每个区间只会被第一个他包含的点摧毁。问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的。 题解: 将n个区间按照左端点排序,然后用vector(储存左端点,右端点,id)初始化线段树。 初始化的方法是:对于线段树的n个叶子节点,即为排好序的n 阅读全文
posted @ 2018-08-05 14:16 Pneuis 阅读(400) 评论(0) 推荐(0)
摘要:题意: 给出a数组的排列。求出字典序第k小的b数组的排列,满足1<=bi<=n,bi<bi+1,a[b[i]]<a[b[i+1]],m>0。 题解: 用树状数组倒着求出以每个数为首的递增子序列个数。若总的个数之和小于k则输出-1。 总的个数可能非常大而k<=1e18。所以要判下上界。 最后从1~n扫 阅读全文
posted @ 2018-08-04 22:30 Pneuis 阅读(283) 评论(0) 推荐(0)
摘要:A.gpa(01分数规划) 题意: 有n门科目。第i门科目的学分为Si,分数为Ci。根据学校的规定,最终的得分为 。求删掉k门科目后的最大得分。 题解: 二分答案,假设当前二分的答案为P,排序求出Si*(Ci-P)值前n-k大的科目判断可行性。 #include <bits/stdc++.h> us 阅读全文
posted @ 2018-08-04 22:11 Pneuis 阅读(374) 评论(0) 推荐(0)
摘要:题意: 一共有n个宿舍,每个宿舍有4个人。给出第一年的人员分布和第二年的人员分布,问至少有多少人需要移动。 题解: 对于第一年的每个宿舍,向今年的每种组合连边。流量为1,费用为(4 - 组合中已在该宿舍的人数)。 最后跑一边费用流。 #include <bits/stdc++.h> using na 阅读全文
posted @ 2018-08-03 10:23 Pneuis 阅读(250) 评论(0) 推荐(0)
摘要:题意: T次询问,每次给出n,m。求sigma(k:0->m)C(n, k)。 题解: 用离线莫队来做。 令S(n,m) = sigma(k:0->m)C(n, k)。 S(n+1, m) = 2S(n, m) - C(n, m) S(n-1, m) = (S(n, m) + C(n-1, m)) 阅读全文
posted @ 2018-08-02 10:32 Pneuis 阅读(258) 评论(0) 推荐(0)