zoukankan      html  css  js  c++  java
  • Codeforces Round #198 (Div. 1 + Div. 2)

    A. The Wall

    • 求下gcd即可。

    B. Maximal Area Quadrilateral

    • 枚举对角线,根据叉积判断顺、逆时针方向构成的最大面积。
    • 由于点坐标绝对值不超过1000,用int比较快。

    C. Tourist Problem

    • 假设序列为(p_1,p_2,...,p_n),则距离总和为(,,,p_1,|p_2-p_1|,...,|p_n-p_{n-1}|)
    • 第1个点(p_1)的贡献为(sum a_i(n-1)!)
    • (|p_i-p_{i-1}|)的贡献为(|p_i-p_{i-1}|(n-1)(n-2)!)
    • 对于(a_i)排序,可以计算所有(p_i-p_{i-1},p_i>p_{i-1})的总和,乘以2即所有(|p_i-p_{i-1}|)的总和。

    D. Bubble Sort Graph

    • 对于所有(i<j, a_i>a_j)的点对来说,冒泡排序最终都会交换这两个数,即存在连边。
    • 最大独立集显然就是最长上升序列的长度。

    E. Iahub and Permutations

    • (dp,O(n^2))做法:
      1. (dp(n,k))表示有(n)个自由放置的数,(k)个限制放置的数。
      2. (dp(n,0)=n!),因为没有限制,所以方案数为(n!)
      3. (dp(n,1)=n cdot dp(n,0)),限制的数有(n)个位置可以放置,剩余(n)个数全排列放置。
      4. (dp(n,k)=ncdot dp(n,k-1)+(k-1)cdot dp(n+1,k-2)),考虑其中一个限制的位置:选择自由元放置,则对应限制的数称为自由元。选择限制数放置,不能放置对应的数,所有(k-1)个,对应限制的数称为自由元。
    • 容斥(O(n^2))做法:
      1. (dp(i))表示有(i)(fixed point)的方案数,(tot)表示空闲位置,(fp)表示最大数量。
      2. (dp(i)=inom{fp}{i}(tot-i)!-sum_{j=i+1}^{fp}{dp(j)inom{j}{i}})
    • (dp,O(n))做法:
      1. (dp(i))表示放置(i)个限制数的方案数。
      2. (dp(0)=free!)(free)表示自由元的数量。
      3. (dp(1)=dp(0)*free),当前自由元不能放置在本身位置,所以需要和一个自由元对换位置。
      4. (dp(i)=freecdot dp(i-1)+(i-1)cdot(dp(i-2)+dp(i-1)))((i-1)dp(i-2))表示当前限制数和之前其中一个限制数两个互相占据彼此的位置,则变成放置(i-2)的子问题,否则如果没有对换位置,则变成(i-1)的子问题。

    F. Iahub and Xors

    • 二维前缀异或和。
    • 修改单点((x,y)),会对(,(x+2k,y+2k))所有前缀产生影响。
    • 根据((x,y))的奇偶性,建4棵二维树状数组,容斥计算异或和以及更新前缀和。

    G. Candies Game

    • 结论:任意三个数(A,B,C),都能通过若干次操作,使得其中一个数变成0。
    • 证明,以下考虑三个数都不相等的情况:
      1. 假设(0<A<B<C),则(B=Acdot q + r),其中(r<A)。那么我们的目的就是把(B)转成(r),得到更小的三元组。
      2. (q)用二进制表示,则(B=(2^{e_n}+2^{e_{n-1}}+…+2^{e_0})A+r)
      3. 从最低位考虑,若对应位置为(1),则(q)的二进制1的个数减少1,否则从(C)取出(A)放入(A)中。即(A)的值依次变成(2^0A,2^1A,2^2A,…),那么就能对应地把(q)的1全部去除,即$B'=r
  • 相关阅读:
    Windows关于文件句柄数的限制
    python 的未来5-10年的就业方向
    想着给要做的软件起一个名儿~
    sql server 特殊sql
    字节序之大小端_Intelx86是小端_网络传输是大端
    维基百科Wikipedia镜像网站列表
    NodeJS开启GZIP功能
    SqlServer2008 跨服务器同步数据
    Asp.net中的ViewState用法
    JAVA Netty入门Demo实例代码(自写测试可用)实现客户端服务器端互传数据
  • 原文地址:https://www.cnblogs.com/mcginn/p/6653845.html
Copyright © 2011-2022 走看看