• 动态规划+杂题


    动态规划

    标签(空格:动态规划


    状态设计

    1,状态设计->拆分or合并
    2,利用二分减少状态
    3,状态分段

    例题

    Bzoj 2298
    解:每个人的话相当于排名([a_{i}+1,n-b_{i}]),如果两个人的话代表的区间
    有心爱那个键但不完全重合,那个这两个人冲突
    那么就变成了选择最多不想交线段<->
    Bzoj 1190
    解:质量大的背包,观察数据性质考虑->吧状态数值变小,
    对于b相同的数据分组dp,对于每一组分别转移,态数值变小
    Cover :
    给定n个点无根树,节点i权值为(w_i),若选择i,则可以将距离这个点(w_i)以内的点全部覆盖,任意一边的长度为1
    问:最少选多少点能将整棵树覆盖((n<=100))

    数位DP

    sdoi 201


    3 淘金

    Bzoj 3329

    x xor (x<<1+x)=(x<<1)->
    (x<<1) + x = x xor (x<<1);
    问题转化为一个数的二进制形式中没有相邻的1
    "^"->不进位加法

    期望,概率dp

    1,求一些限制条件下的概率期望
    2,求概率常常为正推,期望常常为逆推
    3,有拓扑序问题直接Dp,没有拓扑问题高斯消元是常见法
    4,期望可加
    5,全概率公式,贝叶斯公式

    dp of dp

    给出一个n*n的棋盘,上面有一些格子必须是黑色的,其他可以染黑或染白,求有多少种染色方法使得棋盘上的最大白色正方形边长为k
    dp of dp

    斯坦拿树

    Bzoj 3205

    预处理每个地方向每个方向推动到达哪里
    令f[l][r][x][y]表示在点(x,y)将编号在[l,r]区间内放入机器人全部合并最小推动次数
    推动:。。。。
    利用<斯坦拿树>用途(spfa)跑最短路进行转移

    斜率优化:

    方程类似f[i]=min(f[j]+a[i]+b[j]+c[i]d[j]+e)
    去掉常数和只与i相关的变量
    f[i]=min(c[i]
    d[j]+(d[i]+b[j]))
    与直线方程b=kx+y
    最大/最小化截距
    这样的点一定在凸壳上
    维护凸壳在凸壳上找到最优决策

    凸函数优化

    IOI 2016 Alien

    1<>将对角线以下的点翻到对角线以上
    除去被包含的点,剩余的点按照x从小到大排序,y一定也是从小到大的
    ,且一个正方形会覆盖连续一断点
    令f[i][j]表示用了i个正方形,覆盖了前j个点的最小总面积
    转移枚举最后一个正方形覆盖的是哪一段点
    f[i][j]=min{(f[i-1][k]+y_i-x_k+1)^2-max(0,y_k,x_{k+1}+1)^2)}
    斜率优化->用栈维护,复杂度O(nk),60%;
    2<>若不限制选取的小正方形的个数,而是改为每多选取一个小正方形就需要额外的C的面积
    g(j)表示覆盖钱j个点的最小面积
    g(j)=min{f[k][j]+kC}
    g(j)=min{(g(k)+(y_j-x_{k+1}+1)^2-max(0,y_k-x_{k+1}+1)^2+C)}
    g(n)可以用斜率优化在限行时间内求出,并可以同时求出此时最少需要的最小正方形数
    通过g(n)求出对应的f[x][n]的值

    杂题选讲

    int main() {
        using namespace std;
        return null;    
    }
    

    TC SRM563-950

    考虑两个格子之间的关系,如果两个硬币在这两个格子上,是否有机会调出
    ->记忆化搜索两个格子

    TC SRM564-850

    对于前面的b随便取,最有一个b一定能调整使得异或和为n
    然而有(A_i)的限制
    (A_i)排序,对于最大的元素(A_1),考虑(B_1)(A_1)的最高位的二进制是否取1
    (/....................................................................../)

    Bzoj 3080

    枚举边权总和->枚举平均数->计算生成树每条边对方差的贡献->完
    NEERC 2017-2018 Moscow

  • 相关阅读:
    二维数组的最大联通子数组
    四则运算网页终结版
    Python+Selenium进阶版(四)-封装一个自己的类-浏览器引擎类
    Python+Selenium进阶版(三)- 二次封装Selenium中几个方法
    Python+Selenium进阶版(二)- Python中类/函数/模块的简单介绍
    Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用
    Python+Selenium学习-Xpat增强梳理版
    Python+Selenium练习(三十一)- 截图并保存
    Python+Selenium练习(三十)- 获取页面元素的href属性
    Python+Selenium练习(二十九)- 获取当前页面全部图片信息
  • 原文地址:https://www.cnblogs.com/sssy/p/8288529.html
Copyright © 2020-2023  润新知