zoukankan      html  css  js  c++  java
  • codeforces 2100左右的dp题 泛刷

    题单地址

    我也不知道有没有 2100,反正就拿来做了。顺便记录一下心得。

    我也不知道是不是都是 DP,反正就拿来做了。现在发现有一些算不上 DP,不纯正属于是。

    因为我才刷了一点点并且重心还在这上面,所以会持续更新。

    CF16E Fish

    • 状压 DP & 概率

    枚举未知量,然后枚举谁吃了谁来转移。(假设 (i) 吃了 (j)

    [f_S = sum_{j otin S & i in S} f_{S mid j} imes a_{i,j} imes frac{1}{cnt imes (cnt + 1)} ]

    (cnt) 表示的是 (S)(1) 的数量。

    CF14D Two Paths

    • 树的直径

    题目要求树上两路径乘积的 (max)

    本身好像并不可做。但是 (n) 很小,可以暴力断边,然后对两棵树分别求树的直径找最大乘积。

    好像有换根 DP 的线性做法,感觉很牛逼,但是我不会。

    CF930C Teodor is not a liar!

    • 最长上升子序列

    显然你需要知道一个点被多少线段覆盖。这个可以差分维护。

    然后你开始手模样例,你想知道什么情况下可以知道所有点都不能被所有线段覆盖。

    然后你发现,如果一段选取的序列中存在两个峰,那它是不合法的。

    所以你猜所有合法的序列一定是一个单峰的,然后从前往后从后往前搞一个最长上升子序列就做完了。

    我不会最长上升子序列 (O(n log n)) 做法,所以我用了线段树。

    CF936B Sleepy Game

    • tarjan, dfs

    具体情况看我写的题解吧,我累了。

  • 相关阅读:
    程序片段--2的乘方
    Set、Map集合、栈、队列
    Map迭代(六种)
    Struts2标签--控制标签
    线性表
    数据结构笔记(1)
    spingMVC问题小结
    《浪潮之巅》十四章笔记
    《浪潮之巅》十三章笔记
    《浪潮之巅》十二章笔记
  • 原文地址:https://www.cnblogs.com/Silymtics/p/15318055.html
Copyright © 2011-2022 走看看