zoukankan      html  css  js  c++  java
  • 九省联考2018乱写

    d1t1

    考虑到棋子一定是阶梯状排列据说爆搜一发只有35w种状态

    那么就直接上哈希+记忆化+(Min-Max)对抗搜索,注意要记忆化倒着搜

    还看到了一种神仙状态,先加(m)(0),若有一行有(k)个棋子,就在第(m)(0)后面插入一个(1),状态数应该更少?

    d1t2

    数字从大到小排序

    先考虑数字互不相同的情况,显然每个节点在父亲节点可选择区间内,选没被选到的最大的那一段区间

    如果有相同数字这样就会出问题,例如数字是(7,6,5,5,5,5),其中(1)节点子树大小是(4)(2)节点子树大小是(2)

    考虑每个数字维护一个(c_i)表示自己加上左边还有几个数字能被选择

    那么处理一个节点,根据贪心,找到这个点能选到的最大数字(([pos,n])(c_i)都大于这个点子树大小的最靠左的位置),又根据贪心,我们应该选择这个数字中最靠右的一个

    此时知道这个数字左边应该留出(siz[x])个数字放到(x)的子树内,但是我们不能直接钦点是哪些数字,因为不知道后面的节点是什么情况

    此时可以对([pos,n])减去(siz[x]),表示这些位置左边可以选的数字少了(siz[x])个,用来限制住想要对(pos)左边数字下手的节点,(c_i)的含义可以理解为,别的节点至多能在我左边拿走几个

    遍历到子树内的时候,要把父亲的影响减去,因为父亲的限制是用来限制住同深度的节点,当自己的子树想要在内部寻找数字的时候应该放开限制,根据贪心,子树必定会选择它们父亲限制的那些数字

    d1t3

    有一个比较显然的暴力:

    (f[i][j])表示包含(i)的联通块,权值大于(a[i])的有(j)个的方案数,我们有一个(O(n^2k))的算法

    观察到(O(n^2k))大概只有(4e9),但是开了(7s),所以卡卡常就过了

    不会有人觉得我要写正解吧,不会吧不会吧

    d2t1

    如果读懂题还不是很难但是我被题意杀了

    先考虑(C=1)的很厚的暴力分

    最优方案可以直接(O(nm))确定下来

    第二问可以二分答案,把每个人放在哪个位置才能三个愿望一次满足

    再考虑(C eq 1)的情况,可以考虑魔改一发匈牙利,让右侧节点每个节点能够接受(b[i])个点这样子

    对于每个人,志愿从第一到最后跑匈牙利

    如果第二问依旧二分的话,我们要存下每个人跑完匈牙利后的图,匈牙利要用(set)维护,复杂度可能是(O(n^2clogn))这样子

    但是注意到一个性质,对于一个点,匈牙利遍历到前面某个节点的时候,说明如果没有前面这个节点,就匹配成功了,所以第二问不用二分,直接匈牙利的时候记录一下访问到的最考前的点

    d2t2

    (k+1)条路径,让和最大

    (WQS)二分裸题

    就考虑一下怎么求答案吧

    (dp[0/1/2][x])表示以(x)为根的子树,下面向上连接了几条边

    为什么要加一个(2)?因为这个节点只能和某两个子树凑成一条链,如果不加(2)那就只能合并到(0)的状态,可能会出现和子树合并出了两个或更多链的情况

    如果二分找的是最小的可选取的让路径(ge k+1)的斜率(m),那么需要选尽量多的路径

    d2t3

    甩个链接就跑

  • 相关阅读:
    51Nod 1119 机器人走方格 V2 组合数学 费马小定理
    Codeforces Round #439 div2 869A The Artful Expedient +869B The Eternal Immortality
    51Nod 1050 循环数组最大子段和 dp
    51Nod 1009 数字1的数量 数位dp
    51Nod 1082 与7无关的数 暴力打表(埃氏筛的感觉)
    POJ 2001 Shortest Prefixes
    字典树模板
    HDU 1251 统计难题
    kmp算法模板
    HDU 2087 剪花布条
  • 原文地址:https://www.cnblogs.com/knife-rose/p/13091052.html
Copyright © 2011-2022 走看看