zoukankan      html  css  js  c++  java
  • 省选模拟

    D1T1 (5274)

    对于区间 ([l,r]) 上的一次操作,只可能有两种情况。

    • ([l,r]) ,高度为当前最小值。贪心证明。
    • 最小值所在位置分 ([l,r]) 为两个区间,对其中一个区间操作。子区间也可能再次被分割,需要递归处理。

    (由于操作次数限制,策略需要进行“一定程度的贪心”,不总是第一种情况。)

    (f[i][j][k]) 表示区间 ([i,j])(k) 次的最大收益。上述讨论说明转移无需枚举中间点,只要按最小值拆为两个区间并递归转移。

    D2T1 (5277)

    所有合法路径经过的格子是一个连通块,分别从左上和右下BFS可以求出。连通块的左下边界和右上边界是两条“临界路径”,如果它们在某一格相交,说明这里是必经之路,只要占据就必定不存在合法路径。这是第一类。

    还存在另一种可能。此时,两个格子一定会分别占据两条“临界路径”(反证法证明)。不妨设占据左下路径,使它不合法,产生一条新的“临界路径”。若新路径与右上路径产生交点,将其封锁。

    考虑如何求出新的临界路径。

    按照 (x+y)(a[x][y]) 分层。占据 (a[x][y]) 时,在 (x+y) 层,新路径必须找到一个新点经过。这个点应尽量偏左下,并且在连通块内,可以暴力求出。

    现在已经确定新路径的一个点,以这个点按照求左下路径的策略拓展,就是新的临界路径。当有一点与之前的路径相同时,之后的路径都相同,不产生贡献,可以退出。

  • 相关阅读:
    mysql分页查询优化
    java反射及Method的Invoke方法(转载)
    java需会(转载)
    Java注解(Annotation)原理详解
    深入分析JDK动态代理
    Java并发编程:volatile关键字解析
    安装hadoop
    linux 配置ssh免密登录
    安装Centos 7 并且配置远程登录
    MAC安装VMware fusion
  • 原文地址:https://www.cnblogs.com/ehznehc/p/14436185.html
Copyright © 2011-2022 走看看