• SDU暑期集训排位(2)


    A. Art

    solved by sdcgvhgj 3min
    签到


    B. Biology

    solved by sdcgvhgj 85min
    暴力


    C - Computer Science

    solved by rdc 16min

    题意 数轴上有一些点,求极短长度 x,使得存在 (n) 个区间,第 (i) 个区间包含 (a_i),包含的点数至少 (k) 个。

    做法

    • 每个区间相互独立。
    • 对点排序。
    • (x_{i+k-1} - x_i + 1) 区间更新 ([x_i,x_{i+k-1}])

    D. Drama

    solved by rdc 183min -1

    题意 题目说了半天告诉了我们这是一个先升后降柱状图,升最多升一格,否则解体。

    做法

    • 先识破高度是 (O(sqrt{n})) 级别的。
    • 对列做 DP,前缀后缀分开考虑。
    • (f[i][j]) 表示用 (i) 个格子最后一列高度为 (j) 且相邻两格高度差小于等于 1 方案数。
    • (g[i][j]) 表示用 (i) 个格子最后一列高度为 (j) 方案数。(g) 需要用前缀和优化。
    • 复杂度 (O(nsqrt{n}))


    F.Small Numbers

    solved by F0_0H 28min

    题意 给两个数a,b,支持两种操作,(1)同时除公因子 (2)一个除,一个乘。要求操作完a,b和最小

    题解 对a,b进行素数分解,对于每个数量为奇数的素因子,暴力枚举分给a或b即可


    G.New Keyboard

    solved by F0_0H 158min -2

    题意 按照题意打印字符串

    题解

    • dp[i][j][0|1] 表示当前处理到第i个字符,且在第j个机器上,且上一次操作是打印或者换机器的最优解
    • 直接转移会GG,但我们可以跑最短路,每个状态最多两条边判断打印还是跳转。
    • dij加个log,复杂度有点炸,但还能苟过去

    I. Acute Triangles

    solved by sdcgvhgj 270min +11
    题意 求n个点构成的锐角三角形个数
    做法

    • 答案为锐角个数减(2*C_n^3)
    • 以每个点极角排序,尺取求以每条边开始的锐角个数
    • 共线的时候夹角为0,被算进去了两次,所以对于共线的两个向量应该根据长度关系安排一个顺序
    • 解体了2个小时之后把long long改long double莫名其妙卡过了,其实是极角排序的精度问题,之前一直用atan2判大小其实是有问题的,先判象限然后叉乘才是正确姿势

    J.Joining Arrays

    solved by F0_0H 261min -3

    题意 给两个序列,分别选出一个子序列,并拼成一个长度为K的序列,要求字典序最小
    题解 暴力加贪心

    • 暴力枚举第一个序列选t个,那么第二个序列选k-t个
    • 暴力从a序列里选出长度为t且字典序最小的子序列,b同理
    • 考虑合并两个子序列,归并
    • 1)队首元素不相等,直接选
    • 2)队首元素相等,这个比较凉,但可以通过二分加序列哈希的方式判断出下一个不相等的位置,再贪心选即可
    • 用合并后的序列更新答案

  • 相关阅读:
    以多维数组的形式访问动态内存 笔记
    SQL对于 小数处理的小结
    备忘,搞不明白这是为什么
    生成3位的序列号_仅仅CASE WHEN的简单应用
    DataGridView导出数据到Excel
    Sql更新
    delphi使用RichView控件 表格保存和复制
    delphi使用RichView控件 表中选择
    delphi使用RichView控件 表格单元格合并
    delphi使用RichView控件 表格大小
  • 原文地址:https://www.cnblogs.com/FST-stay-night/p/11260299.html
Copyright © 2020-2023  润新知