摘要:
题面 题意:有 \(n\) 个物品,你可以选择若干个物品,使他们的价值之和 \(\leq t\) ,求他们价值之和的最大值。 \(n \leq 40, t\leq 10^9\) 。 首先看到这个 \(n\) 非常小,但是暴力的 \(O(2^n)\) 跑不过去。 这是我们就要想双端搜索。双端搜索的主要 阅读全文
摘要:
题面 他就是说有 \(m\) 个数在他的位置上, \(n-m\) 个数不在他的位置上。 那么那 \(m\) 个数是任意的,所以共有 \(\dbinom{m}{n}\) 种组合方法,剩下的数可以发现是一个错位排序。 所以答案就是 \(\dbinom{m}{n}\times d_{n-m}\) 。组合数 阅读全文
摘要:
T1 \(\text{Statement}\) 表达式的计算 数学表达式求值:输入由数字、'+'、'-'、'*'、'/'、乘方'^'、小括号组成的字符串,输出运算结果 \(\text{Solution}\) 非常裸的一个题目。 首先把算式读进来,先用一个栈将其转化成后缀表达式,然后求值即可。 T2 阅读全文
摘要:
题面 树形DP。 首先可以发现, \(m>2\) 时,难受度只出现在最大的头吃的果子上(因为我把果子分成最大的头吃的和其他的,其他的里面,相邻的果子让不同的头吃即可)。 然后我定义 \(f_{i,j,k}\) 为当前为 \(i\) 节点,当前节点分 \(j\) 个果子给最大的头,当前节点选择情况为 阅读全文
摘要:
题面 把这些数分成 \(k+1\) 组,每组做完以后清零。 那么首先易证每一组里面一定是严格不增的,所以我们先要考虑给整个数组从大到小排序。 然后怎么去考虑当前的数扔到哪个组中呢?我们用贪心的想法,每次插入都让这次插入得到的答案最大,那么因为插入这个数所得到的答案和我插什么数没有关系,所以我每次都取 阅读全文
摘要:
题面 首先这 \(n\) 个数是互相独立的,所以我们不需要统一的去考虑,只需要考虑其中一个数即可。 我们以 \(k=5\) 的情况举例。 我设 \(f_i\) 为最后一行只填前 \(i\) 个点的情况数, \(g_i\) 为 \(k=i\) 时总共的情况数。 显然, \(f_0\) 就是 \(g_{ 阅读全文
摘要:
题面 首先看到这是个 DS 题并且要维护异或,所以他就是个 trie。 然后来考虑怎样求出 \(\text{mex}\) 。 显然,对于树上的一个节点,我能往 \(0\) 的方向走肯定最优,如果那边满了说明走另一边。最后走的那条路径就是答案。 如何维护异或呢?考虑在做 \(\text{mex}\) 阅读全文
摘要:
题面 题意: 给出 \(n\) 个字符串和 \(q\) 个询问,对于每一个询问,求出以询问串为前缀的字符串的个数。 看到了“前缀”,所以立即想到了用 trie 树。 读入字符串时,把每个字符串插进树里,插入的过程中,我们对于每个节点维护一个 tag ,对于每一个经过的节点,就将他的 tag \(+1 阅读全文
摘要:
题面 比赛结束后第一时间想到这个题的解法。 赛时已经想到了这是个二分,我们以此为突破口继续往下走。 考虑 \(\operatorname{check}\) 函数怎么写。我们看这个 \(n\) 是 \(10^7\) 级别的,所以时间复杂度应该是 \(O(n\log_2n)\) ,所以 \(\opera 阅读全文
摘要:
题面 对于这个题,你可以发现如果一个牛受欢迎那么他所在的 \(\text{SCC}\) 都受欢迎,因为它们是互相连通的。所以考虑缩了点再说。 然后我们得到一个新的图。如果他不联通那答案显然就是 \(0\) ,而在每个连通块中必定有一个点出度为 \(0\) (否则就出现了一个新的SCC),所以我们统计 阅读全文