• BNU-2017.7.4排位赛2总结


    链接:https://www.bnuoj.com/v3/contest_show.php?cid=9147#info

    A题

    sort之后交换首尾两个数。

    B题

    for一遍,如果每个数都在对应位置了,输出n;否则看一下不在对应位置的每个位置,是不是再映射一次以后恰好是自己,如果是cnt+2;否则cnt+1。

    C题

    一堆数任意乱减,减的结果不会超出n个数的gcd。而且所有可能得到的数是gcd*k,k是正整数,且gcd*k<=max{ai}。就看这些数中不在ai中的个数的奇偶性就行了。

    D题

    概率dp+状压dp。dp[S]表示S状态到达全1状态的期望次数。dp[(1<<n)-1]=0,然后从后往前推。

    dp[S]=Σpi*(dp[S|i]+1), 0<=i<n。有一些状态dp[S|i]=dp[S]移到等式左边去就可以化简出dp[S]的公式。

    E题

    给n个点,问能选出多少个凸四边形。考虑对立面,看能选出多少个凹四边形,凹四边形必定有且仅有一个顶点被其他三个点构成的三角形包含。

    所以枚举被包含的点O,然后再求有哪些三角形包含了这个点O。

    再次考虑对立面,看哪些三角形没有包含这个点O。

    以这个点O为中心极角排序后,枚举三角形的其中一个点A,然后去找另外两个点B,C,使得ABC不能包含O。

    这个条件的等价条件是OA*OB>0且OA*OC>0,或者OB*OA>0且OB*OC>0,或者OC*OA>0且OC*OB>0。由对称性,只检验一个即可,这样每个三角形恰好选了一次。

    F题

    最小循环节长度=len-next[len]。

    G题

    差分约束系统,在维基百科上概念将的很清楚:https://zh.wikipedia.org/wiki/差分约束系统

    但是上面没说当一个点确定的时候,其他点距离他的最大值怎么求。实际上要求S-T的最大值,只需要做T到S的最短路即可。如果要求S-T的最小值,只需要转化成T-S的最大值。

    H题

    方法1:x轴和y轴都离散化,然后这样以后本质不同的行只有O(400)个,相同的行可以通过一行做完然后做乘法来累加,每一行离散化以后直接暴力染色。

    方法2:200*200条线把空间分成O(40000)个区域,每个区域可以用一个点做100次检验来得到颜色。

    然而当时这两个方法都因为我colors写成color给挂掉了……

    I题

    待读题。 

  • 相关阅读:
    MyEclipse 工具优化和初始化设置
    ubuntu添加软件源
    C/C++数组名与指针区别深入探索
    为什么不常见include .c文件
    [置顶] Linux学习笔记(完整版)
    linux .deb文件安装
    我们就是查拉图斯特拉所说最后的人?!
    关于Mina
    讨厌SVN
    关于对Mina的一些看法
  • 原文地址:https://www.cnblogs.com/acmsong/p/8157336.html
Copyright © 2020-2023  润新知