摘要: 金组题什么的都要绕个弯才能AC。。不想银组套模板= = 题目大意:给n个点,求最小边长使得此正方形内的点数不少于c个 首先一看题就知道要二分边长len 本来打算用二维前缀和来判断,显然时间会爆,而且坐标最大10000是不可行的 为保证效率,检验的时间应该在O(n2) 所以我们先给x排个序,以每个点的 阅读全文
posted @ 2016-09-20 21:43 mzl0707 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 求可重叠的至少重复K次的最长字串 3 以1为下标起点,因为a[i]最大到1000000,所以要先离散一下 4 二分长度len 5 然后O(n)检验 6 后看h[i]是否有连续的一段h[i]大于len的,并且h[i]连续的长度大于K则满足 7 */ 8 #include 9 #include 10 #include 11 using namespace std; ... 阅读全文
posted @ 2016-09-18 21:58 mzl0707 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 三道金组比较容易的题目。。 2058 首先交换次数就是逆序对数,因为只能交换相邻的两数 先对原序列找逆序对数 用树状数组nlogn求出 然后O(n)依次求出其循环序列的逆序对数 比如 3 5 4 2 1 循环之后相对应的位置变成 2 4 3 1 5 表示第一个数到位置2,第二个数到位置4,第三个数到 阅读全文
posted @ 2016-08-16 14:04 mzl0707 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 好题。。 先找出每个节点的树上最长路 由树形DP完成 节点x,设其最长路的子节点为y 对于y的最长路,有向上和向下两种情况: down:y向子节点的最长路g[y][0] up:x的次长路的g[x][1]+dis[x][y] up:up[fa[x]]+dis[x][y] dfs1找向下,即向子节点的最 阅读全文
posted @ 2016-08-12 21:50 mzl0707 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 既然要求最大01子矩阵,那么把应该为0的位置上的数取反,这样就变成求最大子矩阵 最大子矩阵可以用单调栈 阅读全文
posted @ 2016-06-05 09:51 mzl0707 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 此题代码量较大。。但是打起来很爽 原本不用lca做一直wa不知道为什么。。 后来改lca重打了一遍= =结果一遍就AC了orz 题目比较裸,也挺容易打,主要是因为思路可以比较清晰 另:加读入优化比没加快了1.3s。。 阅读全文
posted @ 2016-05-28 11:50 mzl0707 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给个序列,求最长的连续子序列使其为7的倍数 又是一道令人欢喜的不用怎么用脑的水题。。 边读入,边计算前缀和 分别保存前缀和%7结果为1,2,3,4,5,6的第一次的位置 然后减一减就知道长度啦。 阅读全文
posted @ 2016-05-28 09:39 mzl0707 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给张无向图,有两个人a,b分别从各自的起点走向各自的终点,走A,B个来回,图里有些边只能走两次,求问是否能满足a,b的需求 按照题目给的表建图 S连a1,b1 a2,b2连T 跑最大流看是否满流 为了防止a1跑到b2的情况 第二遍 S连a1,b2 a2,b1连T 若还是满流说明没问题 阅读全文
posted @ 2016-05-26 21:38 mzl0707 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目大意:对于一个序列,可以k次选任意一个区间权值+1,求最长不下降子序列最长能为多少 其实我根本没想到可以用DP做 f[i][j]表示前i棵,操作j次,最长子序列长度 p[x][y]表示操作x次后,最高玉米为y时的最长子序列长度 那么以n棵玉米分阶段,对于每个阶段 f[i][j]=max{p[k] 阅读全文
posted @ 2016-05-26 20:56 mzl0707 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 这是一道写起来比较顺手的题目 没有各种奇怪的细节,基本就是Kruskal和倍增LCA的模板。。 题目大意:对于一个无向带权图,询问两点之间一条路,使得这条路上的最长边最小,输出最小最长边的的值 那么既然要使最长边最短,我们可以先构造一棵最小生成树 由于kruskal已经将边排了序了,所以对于这棵树, 阅读全文
posted @ 2016-05-26 15:39 mzl0707 阅读(147) 评论(0) 推荐(0) 编辑