zoukankan      html  css  js  c++  java
  • 省选模拟21

    A. 灯

    题意:给出n个灯的颜色,颜色至多m种,q次操作,每次改变某种颜色灯的状态,求有多少极长的开着的灯的连续段。
    理解错题,极长指不能再延长,而不是问最长段有几个。
    转化成图就是求连通块数=点数-边数,也就是亮着的灯数-相邻的亮着的灯对数。
    然后还是不好维护,考虑暴力点的根号做法。
    按出现次数分轻重点,轻点暴力,重点维护所有该颜色两侧亮着的轻点数。
    轻重都可以根号更新,得解。

    B. 十字路口

    题意:n个红绿灯有固定的周期,在一个周期中,每个红绿灯恰好一次由红变绿,由绿变红。m次观察,给出每个红绿灯此时的状态(绿灯为0,红灯为距绿灯有多久),求周期。无确解输出-1。nm<=1e5
    (x_i)为第i次观察的时刻(d_i)为距离绿灯的时间,如果同一个红绿灯被观察到两次红灯,可以列出(x_i+d_i=y_i+d_y(mod T))
    据此关系建图,边权为时刻差,这样用floyd最小环便是最小周期。(O(nm^2+m^3))
    同理可以向前列出关系,这样是(O(mn^2+n^3))
    %Dc,(min(n,m)<=sqrt{nm})
    这样用较小的计算复杂度(O(nmsqrt{nm}))

    C. 密室逃脱

    题意:n个房间由n-1条隧道连成链,隧道正常下关闭,打开第i个隧道需要在第i个房间固定(a_i)个人按住开关或者在i+1房间固定(b_i)个人按开关,一旦松开立刻关闭,除固定以外的人可以穿过隧道移动。求最多安置多少人使得少于m个人能够到达1号房间。n<=1e3,a b m<=1e4
    部分分符号写反了。。。
    正解dp,基于对性质的分析。
    发现一定是先抱团,可以利用左边的把右边的带过来,为了避免卡住回不来会留一些人在左边。
    这样最后的局面一定是呈若干段,每段内除了固定的一部分人外可以自由移动,所以在可以回到左边的情况下会使最多的自由人到右边拉人。
    根据这些性质设f[i][j]为到达第i个房间的人数恰好(最多)为j时,前i个房间最多有多少人。
    有了定义转移挺明显的。

    (1)转移没必要线段树,变量记录最大的f[i][j]在外层更新即可

  • 相关阅读:
    浏览器拦截跨域请求处理方法
    如何保护java程序不被反编译
    python面对对象面试题
    面向对象之继承
    面向对象之多态
    面向对象之组合
    面向对象初始
    python之匿名函数
    python之内置函数
    azure连接redis
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12285273.html
Copyright © 2011-2022 走看看