• Codeforces Round #736 (Div. 1)


    A. Web of Lies

    只要一个点有连向比他编号大的点,那他就会算入贡献。直接做即可。

    B. Integers Have Friends

    显然先差分,然后从左到右扫描,维护相同 gcd 的段即可,每次的段数都是 $log$ 级别的。乍一看复杂度好像是两个 log,但好像更好的实现和分析一下复杂度应该是一个 log 的。

    C. The Three Little Pigs

    实际上就是求这个多项式的某个次项的值:$sum_{i=0}^{n}(1+x)^{3i}$,等比数列求和可得:$frac{(1+x)^{3n+3}-1}{(1+x)^3-1}$。分母是个低次多项式,直接模拟多项式除法即可。

    D1. Gregor and the Odd Cows (Easy)

    根据 pick 定理 $S=a+b/2-1$,结合这题的要求内部整点数为奇数,可以得到 $2Sequiv bpmod 4$,其中 $S$ 是面积,$a$ 是内部整点数,$b$ 是边界整点数。

    这题坐标都是偶数,那么 $2Smod 4=0$,所以要求 $b$ 也是。然后考虑每一条边的整点数是怎么计算的,是 $gcd(Delta x, Delta y)$,因为这题坐标都是偶数,所以只需要知道两个坐标 $mod 4$ 的余数,就可以知道这个 $gcd mod 4$ 是 $2$ 还是 $0$ 了。

    于是这题只要把 $x, y$ 都 $mod 4$,然后依次枚举三个端点是什么余数即可。

    D2. Gregor and the Odd Cows (Hard)

    这题的坐标是任意的,如果还是跟上题一样只记录 $mod 4$ 余数的话,在 $gcd$ 为奇数的时候不能正确得知 $gcd mod 4$ 的值。

    而且这题还有个限制,$S$ 必须是整数,所以 $2S mod 4$ 必须是 $0$ 或 $2$,所以 $b$ 一定是偶数。

    对每个点 $i$,记录 cnt[i][x][y][b],表示这条边的一个端点是 $i$,另一个端点两坐标 $mod 4$ 的结果是 $x, y$,这条边的整点数 $mod 4=b$ 的边数。

    由于 $b$ 是偶数,所以三条边的整点数中,肯定至少有一条边是偶数。考虑枚举这条边对着的点 $i$,然后枚举 $x_1, y_1, b_1, x_2, y_2, b_2$,要求 $x_1equiv x_2pmod 2, y_1equiv y_2pmod 2$,保证点 $i$ 所对的这条边的整点数为偶数。然后只要看是否满足 $2Sequiv bpmod 4$ 即可贡献答案。

    另外,如果三条边都是偶数,那么会被计算三次,如果三条边恰好一条是偶数,那么会被计算一次,所以最后的答案要除一下。

    E. Gregor and the Two Painters

    考虑对每个连通块搞个代表出来,然后计算代表的个数。

    首先,假设 $a_i$ 互不相同,$b_j$ 互不相同,且所有 $a_i+b_j$ 互不相同(如果相同的话,只需要任意规定一个大小顺序)。

    如果两个格子都 $leq x$,且在同一行或同一列,且他们之间的格子都是 $leq x$ 的,那么称这两个格子能直接到达。

    称一个 $leq x$ 的格子为代表,当且仅当他在所有他能直接到达的格子里,是最小的。

    我们有结论:一个连通块里恰好有一个代表。

    简要证明:一个连通块肯定至少有一个代表,取其中的最小值就是。然后如果一个格子 $(i, j)$ 是代表,且他能直接到达 $(i_l, j)sim (i_r, j)$ 和 $(i, j_l)sim (i, j_r)$,那么这个连通块肯定被包含在矩形 $[i_l, i_r] imes [j_l, j_r]$ 内,于是这个代表肯定是这个连通块里的最小值。

    接下来,设 $L_i$ 表示 $a_i$ 左边最近的 $<a_i$ 的下标,$R_i$ 表示 $a_i$ 右边最近的 $<a_i$ 的下标,$na_i=min(max(a_{L_i..i}),max(a_{i..R_i}))$。

    同理定义 $nb_j$。$na, nb$ 都可以通过单调栈 + RMQ 得到。

    那么一个格子是代表,当且仅当:

    • $a_i+b_jleq x$
    • $na_i+b_j>x$
    • $a_i+nb_j>x$

    考虑把所有数对 $(na_i-a_i, a_i), (nb_j-b_j, b_j)$ 降序排序,然后求出每一个数对与在他前面的数对的贡献。比如当前是 $(na_i-a_i, a_i)$,那么所有在他前面,且 $b_jin(x-na_i, x-a_i]$ 的 $j$ 都会有一次贡献。扫描线 + BIT 即可维护。

  • 相关阅读:
    VS2013 添加 ILDasm
    XmlIgnore的使用
    前端常见跨域解决方案(全)
    网络请求中的cookie与set-Cookie的交互模式的一些问题解析
    各浏览器Cookie大小、个数限制
    Linux常用命令分类
    给博客园中博文的图片添加单击时弹出放大效果——lightbox
    给博客园中博文的图片添加单击时弹出放大效果—— zoom.js
    CSS3新单位vw、vh、vmin、vmax使用详解
    session,cookie,sessionStorage,localStorage的相关设置以及获取删除
  • 原文地址:https://www.cnblogs.com/Master-Yoda/p/15125056.html
Copyright © 2020-2023  润新知