zoukankan      html  css  js  c++  java
  • ZR8.31

    $$color{red}{木得题面木得题解木得代码}$$

    (color{blue}{A}分组)

    (首先先按照工作经验排序)

    (如果经验相同,那么就按照想当组员,啥都想当,想当组长的顺序来排序)

    (设f[n][a][b] 表示当前是第i个人,已经配好了a个,还有b个只有组员)

    那么,就有下面的方程

    组长 : f[x][j][l] = min(f[y][j-1][l+1]+a[i].cost,f[x][j][l]) ;
    组员 : f[x][j][l] = min(f[x][j][l],f[y][j][l-1]+a[i].cost) ;

    最后答案就是 f[n][m][0]

    代码


    (color{blue}{折纸})

    你会发现横着折和竖着折是相互独立的,然后最后答案就是横着的方案数乘竖着的方案数

    所以,我们可以吧折纸看作是裁纸,每次裁掉比较小的一个部分

    剩下的有点小萌

    代码

    (color{green}{C 集合})

    思路

    建一棵字典树

    然后这一棵字典树按照添加进去的数字的二进制从低位到高位储存

    然后现在就是看这几个操作了

    对于操作1和操作2,我们可以维护一个num数组来标记以i节点为终点的数字,来标记有几个这个数

    至于添加一个数,直接添加就行了,删除同理

    至于异或操作,我们就维护一个tag标记

    至于加一操作,我们发现

    对于二进制,加一后就只要找到最左边的一个0,然后这个0右面的所有1都变成0

    然后我们是倒着存的,所以最后一个叶节点一定是0,然后想要加一存起来的话只要左右儿子互换就行了

    也就是说,我们只要找到第一个0,然后慢慢搞就行了

    代码

    # 溜了溜了
  • 相关阅读:
    Contains Duplicate
    Valid Anagram
    Invert Binary Tree
    Same Tree
    代理模式——java设计模式
    单例模式——java设计模式
    关于春招自己感到很失落这件事
    Collections.sort()中的mergeSort归并排序
    腾讯云搭建日志收集系统
    centos7 mysql
  • 原文地址:https://www.cnblogs.com/lyt020321/p/11455636.html
Copyright © 2011-2022 走看看