2018"百度之星"程序设计大赛 - 资格赛 - 题集

Posted finder-iot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018"百度之星"程序设计大赛 - 资格赛 - 题集相关的知识,希望对你有一定的参考价值。

1001

$ 1 leq m leq 10 $

像是状压的复杂度。

于是我们(用二进制)枚举留下的问题集合

然后把这个集合和问卷们的答案集合 $ & $ 一下

就可以只留下被选中的问题的答案了。

之后扫一遍随便判一下重。

1002

非空子串中字典序最小的子串长度一定是 $ 1 $ 。

咱们就记录一下每一个字母出现次数的前缀和,

每次询问就找到出现过的最先的那个字符就星了。

1003

整数规划好像是个NPC问题,

所以我们肯定不能直接上整数规划。

咱们来尝试把问题转换一下。

n=2

x1---y1
   /
   X
  / x2---y2

看起来像是个二分图。

二分图我们可以想到什么呢?

KM算法。

它有一个奇特的性质,

就是假设 $ x_i $ 和 $ y_j $ 被一条边 $ a_{i,j} $ 匹配上,

那么 $ x_i $ 的标签 $ l_i $ 和 $ y_j $ 的标签 $ r_j $ 有这样一个式子是成立的:

$ l_i + r_j geq a_{i,j} $

题目要求 $ l_i + r_j leq a_{i,j} $ ?

把它变成 $ - l_i - r_j leq -a_{i,j} $ ,

然后硬上KM就好了。

注意标签的初始值。

1004

如果你有好办法,

请教教我这个蒟蒻吧。

1005

我们先想一下动态规划。

设 $ f_{i,j} $ 表示以第 $ i $ 个数打止的长度为 $ j $ 的上升子序列个数。

首先 $ f_{i,1} = 1 $ 。

然后也可以知道 $ f_{i,j} = sum{f_{k,j-1}} , k < i quad mathrm{and}quad q_k < q_i $ 。

这可以用一些树状数组来帮助它转移。

但是 $ 1 leq n leq 10000 $ ...

注意一下这句话。

你可以认为给定的排列是从所有 1,2,...,n 的排列中等概率随机选出的。

如果是随机数据的话,我们可以得知,

它的最长的lis不会太长

可能长度只有几百也说不定。

1006

要答案最优的话,

就先只用条件中给定的2种颜色跑一遍最小生成树,

然后“恰好k条满足条件的边”的答案就用剩下的边从小往大加来更新答案。

绿绿的情况分别搞一下。

注意图可能不连通。

以上是关于2018"百度之星"程序设计大赛 - 资格赛 - 题集的主要内容,如果未能解决你的问题,请参考以下文章

hdu 6082 度度熊与邪恶大魔王(2017"百度之星"程序设计大赛 - 资格赛 )

2018"百度之星"程序设计大赛 - 资格赛 A/B/E/F

2017"百度之星"程序设计大赛 - 复赛1001&&HDU 6144 Arithmetic of Bombjava大模拟

2017"百度之星"程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)

2017"百度之星"程序设计大赛 - 资格赛 寻找母串

2017"百度之星"程序设计大赛 - 初赛(B)小小粉丝度度熊