zoukankan      html  css  js  c++  java
  • codeforces 2100左右的DS题 做题记录

    题单地址:https://www.luogu.com.cn/training/1576#problems

    动态更新中~~

    神 KnightL 说:“这些题还算 DS ?”

    反正我不会就对了。/kk

    经验之谈

    • 找到答案的关键性质。CF1299C
    • 或者找到题目的关键性质。CF446B
    • 对问题的转化,把它变成一个经典的贪心模型。CF55B
    • 神奇的构造方式,按状态建树。CF707D

    CF191C Fools and Roads

    树上差分随便做。

    CF1299C Water Balance

    发现答案是单调不降的。

    然后维护一个单调栈,栈内的元素包含一段区间的信息,如果上一段区间的平均值大于这一段区间的平均值就将它们合并。

    CF446B DZY Loves Modification

    你发现行和列之间没有影响。

    所以你可以用堆搞出只选行的情况下的前 (k) 大,列同理。做一个前缀和存 (h_i,l_i) 里。

    考虑重合的部分怎么算?假设共选了 (i)(k-i) 列,那么重合部分为 (i imes (k-i))

    最终答案为 (max{h_i + l_{k-i} - i imes (k-i) imes p})

    CF555B Case of Fugitive

    转化一下这个问题,对于所有相邻的两段区间 ([l_{i-1},r_{i-1}],[l_i,r_i]),你发现它需要的线段的长度在 ([l_i - r_{i-1},r_i - l_{i-1}]) 内,把线段看做点,然后就转化成了多个区间用点覆盖的模型,贪心即可。

    CF707D Persistent Bookcase

    你发现 (1,2,3) 操作都很好做。(是吗?)

    (3) 操作记录一个 (rev) 数组,对 (1,2) 操作用 (vis) 数组记录。

    如何处理 (4) 操作?

    把操作看作点,然后一个操作向下一个操作连边,dfs 即可。

    具体来讲,对于 (4) 操作,可以加一条 ((k,i)) 的边,其他操作可以加一条 ((i-1,i)) 的边。

    CF429D Tricky Function

    发现 (g(i,j)) 可以写成前缀和的形式:(g(i,j) = sum_j - sum_i)

    然后整个式子变成了 (f(i,j) = (i-j)^2 + (sum_j - sum_i)^2)

    发现这个式子和平面间两点距离公式很像,少了个根号而已。

    然后就是一个平面最近点对问题。

    这里用一个比较玄学的做法,按纵坐标排序,然后每个点只比较它的后 (s = 5) 个点。

    CF842D Vitya and Strange Lesson

    把异或的值单独储存。

    然后把 (a) 序列都扔进一个 Trie 里。

    然后在 Trie 树上二分 ( ext{mex}) 即可。

    具体细节说不清,去看代码就行。

    CF56E Domino Principle

    右边的骨牌不会对左边的骨牌造成影响。

    如果左边的骨牌能压倒右边的骨牌,那么它一定能压倒右边的骨牌能压倒的骨牌。

    从右向左处理即可。

    CF912D Fishes

    统计某个位置的鱼能被网住多少次。显然需要找到最优的 (k) 的位置,然后除以网能网多少位置。

    显然中间的最优,剩下的 bfs 找就行。

    计算公式比较牛逼。一个 ((x,y)) 的鱼,能被网到 ((min(x+r-1,n) - max(x,r) + 1) imes (min(y+r-1,m) - max(y,r) + 1)) 次。

    (min(x+r-1,n)) 求的是网的右边界,(max(x,r)) 求的是网的左边界。

    CF817E Choosing The Commander

    这个也是个异或最大值,上 Trie 树。

    和 CF842D 一样要记录一棵子树内有多少数。

    CF702E Analysis of Pathes in Functional Graph

    倍增裸题。

    一开始想成了树剖 /kx

    CF1195E OpenStreetMap

    单调队列裸题。类似于 理想的正方形。

  • 相关阅读:
    Linux下文件权限的设置
    JavaEE中一些缩写的含义
    Xcode7.1环境下上架iOS App到AppStore 流程 转
    iOS UILabel UITextView自适应文本,或文本大小自适应
    Xcode常用快捷键总结
    iOS9的新特性以及适配方案-----转载
    Python下读取转换unicode的json格式
    python pip 不能用报错: ImportError: No module named _internal
    Python获取二维数组的行列数
    Python作用域
  • 原文地址:https://www.cnblogs.com/Silymtics/p/15291705.html
Copyright © 2011-2022 走看看