zoukankan      html  css  js  c++  java
  • 模拟测试59

    T1:

      翻转区间相当于位移,但是边界附近的点要特判。

      可以处理出最左侧和最右侧的对称轴,然后分类讨论每个数的位置,即可知道他能移动到的区间。

      用set进行bfs即可,相同的点不会被遍历两次。

      也可以线段树优化建边,注意优化建边跑双端队列bfs一定要把出边的权值设为1。

      时间复杂度$O(nlogn)$。

    T2:
      将所有的数排序,从大到小枚举。

      每次扩展和枚举的数相同的行和列,这样扩展出的区间为矩形或L形。

      在同一个区间内数的上界限制相同,而互不影响。

      每个矩形或L形的方案数可以用容斥求出。

      先考虑矩形,设$f[i]$为有$i$行满足条件,每列都满足条件的方案数,矩形长宽分别为$a$和$b$,当前限制为s。

      则总方案数为$ans=sum limits_{i=0}^a (-1)^i+1f[i]$

        $f[i]=C_a^i(s^i*((s+1)^{a-i}-s^{a-i}))^b$

      将矩形扩展一下即为L形,设L形多出的与$a$和$b$的方向分别平行部分的长分别为$c$,$d$。

        $f[i]=C_a^i(s^i*((s+1)^{a+c-i}-s^{a+c-i}))^b*(s^i*s^{a-i})^d$

      同样容斥,不同区间的方案数相乘即可。

      时间复杂度$O(nlogn)$

    T3:

      每次坐的时候,若最长长度为奇数,直接坐在中间位置。  

      若为偶数,则中间的两个位置都有可能,并且两种情况关于中间对称。

      于是根据对称计算就行。

      时间复杂度$O(n^2logn)$

  • 相关阅读:
    体验最火的敏捷——SCRUM(厦门,2014.1.4)
    再谈僵尸大会(每日会议)
    神马是敏捷?(4)——敏捷不能当饭吃
    XMLHttpRequest
    xml基础
    element 更换主题
    css3中新增的背景属性和文本效果
    transform rotate旋转 锯齿的解决办法
    优化实现Mobile/Bumped Diffuse
    优化实现Mobile Diffuse动态直接光照shader
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11624871.html
Copyright © 2011-2022 走看看