zoukankan      html  css  js  c++  java
  • zr2019普专题No.1

    (color{red}{A})

    若删除长度为 x 的子串后序列中没有相同元素,那么一定有至少一个长度为 x+1
    的子串,删除它后序列中也没有相同元素,然后可以离散+二分

    木得代码

    (color{blue}{B})

    打几个表忽然发现: 哎?怎么还有个循环节啊23333

    代码 : 木得

    (color{yellow}{C})

    先把所有物品按照拿走的时间从小到大排序,拿走的时间相同就按照放上去的时
    间从大到小。那么一件物品上方的物品就一定会在它的前面。
    考虑 dp,设 f[i][j]表示 i 以及 i 上面物品在所有时刻中最大重量为 j 时的最
    大收益。
    转移的时候,我们需要枚举所有 i 上面的物品,维护一个 g[i]表示时刻 i 之前
    物品的最大收益是多少。然后直接转移就好了。

    代码 : 木得

    (color{orange}{D})

    这道题简化一下题意的话就是

    给你n个长度为m的二进制串,让你选k个出来,使得这k个二进制异或起来全为1

    这个时候,我们想,如果这个串串一共只有(2^n)个子集,然后我们只要用这个(2^n)减去不符合条件的就好了!然后我们就可以容斥一下

    (ans = sum2^cnt{cnt是k的子集个数,kinS})

    然后难点就变成了求cnt

    这时候我们想到了fmt , 用来求高维矩阵和

    如图 : x轴上方有几个*就代表有几个子集

    还是木得代码

  • 相关阅读:
    SQL Server2005重新安装不上的问题及其解决(转)
    取消2003默认共享
    自写生成实体类工具
    双核886针CPU简明制作教程
    VS 2008 在安装SP1后智能提示变成英文的解决办法
    VS2008 安装盘的问题
    拖放 DataGrid 列摘自MSDN
    VB.net SP1 的兼容性问题
    Windows Server 2008+VS2008
    Combobox 的解决方法
  • 原文地址:https://www.cnblogs.com/lyt020321/p/11488182.html
Copyright © 2011-2022 走看看