摘要: http://codeforces.com/problemset/problem/912/E 题意·n个质数,问因子中只包含这其中几个质数的第k大的数是多少 最显然的想法是暴力搜预处理出所有的小于1e18的值,排序后直接输出,但是n的范围是16,仔细一想发现事实并不可行,不论是时间还是空间都不允许。 阅读全文
posted @ 2018-09-02 19:28 Hugh_Locke 阅读(331) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/911/D 题意 给你一个长度为N的序列,有M次操作。每次翻转[l,r]的区间,每次操作后询问序列逆序对个数的奇偶性 很显然问题每次操作之后的变化数量只与区间内自身的逆序数对有关,比较麻烦的操作是翻转的操作。 但是本题 阅读全文
posted @ 2018-09-01 19:34 Hugh_Locke 阅读(573) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3416 题意: 有向图求没有交集的A到B最短路的数量 很显然要先将所有最短路上的边取出来。 用正向跑一遍dis1,反向跑一遍dis2的方法 dis1[u] + dis2[v] + w == dis1[B]的边就是最 阅读全文
posted @ 2018-08-29 11:19 Hugh_Locke 阅读(370) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3613 每个字符都有一个权值,将一个字符串分成两半,如果某一半是回文串就把所有的字符权值加起来,否则当0来处理,问最大值会是多少。 这题很明显是判断前后缀的回文串然后用O(n)的时间遍历取最大值。 问题在于如何判断 阅读全文
posted @ 2018-08-22 21:26 Hugh_Locke 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 先看一道基础题 HRBUST 2224 给定 n 个数组成的数组,求其逆序对的总数。 逆序对定义为,存在 (i, j) 满足 i < j 且 A[i] > A[j] 的二元组的数目。 接下来的一行,包含 n 个数(2 <= n <= 100000),依次表示 A[i](A[i] <= 10^9)。 阅读全文
posted @ 2018-08-21 20:11 Hugh_Locke 阅读(722) 评论(0) 推荐(0) 编辑
摘要: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1376 求LIS的数量。 乍一看觉得还是dp,仔细一看确实可以用dp做。 显而易见的是一个O(n2)的dp,同时维护LIS的值和cnt的数量 当然,由于数据限制,考虑优化 阅读全文
posted @ 2018-08-19 09:10 Hugh_Locke 阅读(309) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱。到了晚上,银行会对信用卡进行一次操作,操作有三种操作。 1.如果a[i]>0,银行会给卡充入a[i]元。 2. 阅读全文
posted @ 2018-08-19 09:08 Hugh_Locke 阅读(264) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/892/E 题意:给出一个 n 个点 m 条边的无向图,每条边有边权,共 Q 次询问,每次给出 ki​ 条边,问这些边能否同时在一棵最小生成树上。 这题乍一看看不出什么方法来,仔细一想发现除了确实看不出什么东西来。 但 阅读全文
posted @ 2018-08-19 09:08 Hugh_Locke 阅读(763) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/842/C 题意: 有一个n个节点的数,每个点有一个点权,根到这个点的所有点权(包括这个点和根)的gcd值为这个点的答案. 对于每一个点的答案,你可以删除其到根节点的路径上的至多一个点来使答案最大. 求每个点的答案(最 阅读全文
posted @ 2018-08-19 09:07 Hugh_Locke 阅读(306) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/834/D 将一个长度为n的序列分为k段 使得总价值最大一段区间的价值表示为区间内不同数字的个数 n<=35000,k<=50 这题的dp是十分显然的,用dp[i][j]表示前i个数字分成j段的最大值 状态转移方程就是 阅读全文
posted @ 2018-08-19 09:05 Hugh_Locke 阅读(299) 评论(0) 推荐(0) 编辑