• 省选/NOI刷题Day2


    bzoj2616 放一个车的时候相当于剪掉棋盘的一行,于是就可以转移了,中间状态转移dp套dp,推一下即可

    bzoj2878 环套树期望dp 手推一下递推式即可

    bzoj3295 树状数组套权值线段树

    NOI2002贪吃的九头龙 多叉转二叉 水过

    bzoj1495 方程就是f[i,j,k]表示以i为根,叶节点有jA,所有的父节点状态为k的最佳值,然后方程就出来了f[i,j,k] = min(Σf[son,j1,k1]),其中Σj1=jk1k加上i的状态。然后把后两维用一个数压一下保存就好了...奇怪的状压

    hdu1561 有树状依赖的背包问题...写起来很奇怪

    清华集训2015 V 线段树裸题

    uoj #48 分类讨论O(1)题

    uoj #67 Tarjan找割点,删掉不是割点的点使图满足条件就好了

    ZJOI2016 线段树 

         题意就是求每个数在所有方案中的最终值的和。显然一个数经过若干次变化一定会变成另外一个数,那么离散化后,令g[i][j]表示i这个数最终变成从小到大第j个的方案数。一个直观的思路是,我们枚举j,那么显然g[i][j]>0的i的范围是(l,r),其中a[l]和a[r]是第j大的数两侧分别第一个大于这个从小到大第j个数的数(由于是随机因此可以假定没有两个数相同)。此时,

           如果令f[k][x][y]表示经过k轮后,恰好是[x,y]这个范围内的数都变成了从小到大第j个数的方案数。但是这样会存在问题,就是如果某一轮的操作跨过了l或r,就会造成[l,r]中某一些数>从小到大第j个数,这样再转移就会出错。

           那么(根据jry老司机的博客)令f[k][x][y]表示经过k轮后,恰好[x,y]这个范围内的数都<=从小到大第j数的方案数,这样就可以转移了。显然f[k][x][y]必然由f[k][u(u<x)][y]和f[k][x][v(v>y)],然后操作任意[t(t<l),u]和[v,t(t>r)]得到;或者直接由f[k][x][y],然后任意一个操作[u,v],其中[u,v]∩[x,y]=0得到。

           然后重新领g[i][j]表示第i个数最终<=从小到大第j个数的方案数,然后减一减即可。

           后来有一个卡常的技巧是每一轮都用long long暴力加起来,这一轮结束的时候再取模。这样瞬间应该可以快很多。

  • 相关阅读:
    为docker容器设置独立ip
    mybatis使用步骤
    mybatis查询返回null解决方案
    单实例和多实例的区别以及用途
    ASP.NET MVC3 通过Url传多个参数方法
    在ASP.NET MVC中,使用Bundle来打包压缩js和css
    MVC Html.AntiForgeryToken() 防止CSRF攻击
    asp.net mvc 在View中获取Url参数的值
    转:ASP.NET MVC利用TryUpdateModel来做资料更新 (二)
    转:ASP.NET MVC利用TryUpdateModel来做资料更新 (一)
  • 原文地址:https://www.cnblogs.com/Kong-Ruo/p/8074018.html
Copyright © 2020-2023  润新知