zoukankan      html  css  js  c++  java
  • 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题

    待读题。 

  • 相关阅读:
    pgspider sqlite mysql docker 镜像
    pgspider docker 镜像
    pgspider基于pg 的高性能数据可视化sql 集群引擎
    diesel rust orm 框架试用
    golang 条件编译
    Performance Profiling Zeebe
    bazel 学习一 简单java 项目运行
    一个好用node http keeplive agnet
    gox 简单灵活的golang 跨平台编译工具
    mailhog 作为smtp server mock工具
  • 原文地址:https://www.cnblogs.com/acmsong/p/8157336.html
Copyright © 2011-2022 走看看