• [做题记录-计数][AGC036F] Square Constraints


    题意

    给一个整数(n), 求有多少排列(P)满足对于任意(iin [0, 2n - 1])满足(n^2 leq i^2 +P_i^2leq (2n)^2), 答案对一个数取模。

    (n leq 250)

    题解

    orz QiuQiu

    考虑先处理出每个位置的上下界。

    (L_i = lceilsqrt{n^2 -i^2} ceil, R_i = min(2n - 1, lfloorsqrt{4n^2 - i^2} floor)), 显然(L, R)都是单调的。

    对于单调的限制, 如果只有一维的话是经典的, 比如如果只有(R)这一维的话, (ans = prod_{i = 0}^{2n - 1} (R_i + 1 - (2n - i - 1)))
    但是现在有两维, 一个想法就是钦定哪些位置在下面, 然后做dp, 但是这样的话会破坏有序性而导致贡献难以计算。
    一个性质是你发现在(i > n)的时候, (L_i)都是(0), 在(i < n)的时候, (L_i < n)(R_i > n), 于是(L, R)是不相交的, 所以给人一种可以分开算的感觉。

    考虑把([0, n - 1])(L)([n, 2n))(R)放一起排序, 那么对于([n, 2n - 1])的部分只要考虑自己占的部分以及以及选了(j)个钦定位置即可。对于([0, n - 1])的部分在取(L - 1)的时候也和差不多, 对于([0, n - 1])(R)的部分, 考虑([n, 2n - 1])中的点在其前面, 还有([0, n - 1])中间的按(R)会排在当前点前面的部分以及钦定了是(L)的部分, 然后dp就可以算恰好(i)个在下面的贡献了, 直接容斥算答案即可。

    代码由于看了QiuQiu的就不放了(。

  • 相关阅读:
    HDU 六度分离
    HDU 找到唯一的冠军
    最短路径问题
    (拓扑排序)确定比赛名次
    Shortest Prefixes
    2768: [JLOI2010]冠军调查( 最小割 )
    BZOJ 1927: [Sdoi2010]星际竞速(最小费用最大流)
    BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
    BZOJ 2424: [HAOI2010]订货(最小费用最大流)
    BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)
  • 原文地址:https://www.cnblogs.com/clover4/p/15306468.html
Copyright © 2020-2023  润新知