zoukankan      html  css  js  c++  java
  • csp-s模拟90

    T1:

    每格的不透明度相当与一个边权,转化为从起点到终点所有路径的最大值。实现最长路,最好用$dijk$。

    T2:

    对于$N=100$,$M=8$,考虑状压$dp$。要用一种状态表示某一行的矩形覆盖情况,其实只需要关心矩形端点。用八位四进制,每位上$1$表示这一格是矩形左端点,$2$右端点,$3$既是左又是右端点,$0$不是端点。转移时,枚举下一行的状态,对于下一行的每一个矩形,如果不包含在上一行则产生$1$花费。状态数很少,考虑极限情况一行$8$个$1$,发现最终状态只与某一位是否单独成矩形有关(状态为$3$),不单独成矩形则一定与相邻合成大矩形(状态为$100...002$),也就是可以变成$01$串考虑,总状态$2^8$。对于每行的状态可以$dfs$预处理。总复杂度$Theta(N*M*2^{2*M})$。

    T3:

    $30pts$:

    按顺序处理操作,对于询问,暴扫前面的矩形,判断是否与下、左边界有交点,取坐标最小中标号最大的矩形。$Theta(N^2)$.。

    $60pts$:

    坐标范围小,可以存储每一格做边界的矩形标号。每次询问按$x$从小到大,$y$从小到大,得到相应点,判断是否有边界落在点上。注意处理$x=0$的情况,可以单独处理。

    $100pts$:

    考虑每一个矩形对询问的贡献,发现它能更新一段区间的斜率的答案。对斜率离散化。分开考虑下、右边界,维护每个斜率的答案(优先坐标最小,其次序号最大),线段树区间修改,单点查询。最终把两个边界得到的答案转化到$x$或$y$比较。

  • 相关阅读:
    四则运算实现
    第四周例行报告
    代码规范,结对要求
    第三周例行报告
    第三周作业3功能测试
    第二周例行报告
    第一次作业汇总
    2017/2/24:Maven的pom jar war的区别
    oracle的常用99条语句
    2017/2/21:配置自己的中文乱码拦截器
  • 原文地址:https://www.cnblogs.com/Duan-Yue/p/11749206.html
Copyright © 2011-2022 走看看