zoukankan      html  css  js  c++  java
  • 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条满足条件的边”的答案就用剩下的边从小往大加来更新答案。

    绿绿的情况分别搞一下。

    注意图可能不连通。

  • 相关阅读:
    gcc编译常用选项
    汇编指令随笔
    VIM简单操作
    Linux编译阻塞型驱动遇到'TASK_NORMAL' undeclared (first use in this function)问题解决办法
    Linux中断流程分析
    Linux驱动开发之LED驱动
    函数(三)
    函数(二)
    文件和函数(一)
    文件处理和字符编码
  • 原文地址:https://www.cnblogs.com/finder-iot/p/9420143.html
Copyright © 2011-2022 走看看