zoukankan      html  css  js  c++  java
  • 晚测8

    A:chinese

    很好的题
    (i*f[i]) 其实是就是求每个点作为炼字的方案数的和

    每个点都是等效的 所以直接求一个点作为炼字 能有多少种方案
    然后乘nm就好了

    求一个点作为炼字的方案数
    首先这个点可以是2~k中的任何一个数
    而当这个点是i的时候
    同一行和同一列的其它数是1~i-1中的任何一个数
    所以这里的系数是((i-1)^{n+m-2})
    此时其它点对它是否是炼字是没有影响的
    可以随便选
    所以最后再乘(k^{n*m-n-m+1})

    结果就是一个点的方案数
    最后乘上nm就是答案





    B:physics
    删除一个点不太好统计答案
    因为将最大的矩形破坏之后 会有很多小矩形可能作为答案
    但是如果将所有删除先进行
    然后倒序加点
    这样每次加入一个+
    答案要么不变 要么在一个包含当前点的矩形中
    所以就很好处理了
    up数组 记录当前点往上有多少个连续的+
    down数组 记录当前点往下有多少个连续的+

    而答案从后往前单调不降是显然的
    所以也就是求min{up[x][i]} + min(down[x][i]) - 1 > ans 是否成立
    即是否存在一个长为k的区间 这个区间中最小的up 加上最小的down -1后大于ans
    所以就是滑动窗口 可以用单调队列维护
    其实这题时限比较宽 所以用堆也可以直接处理

  • 相关阅读:
    mysql的触发器
    数据库面试题
    数据库面试(1)
    eclipse里maven项目An error occurred while filtering resources解决办法
    Missing artifact com.github.pagehelper:pagehelper:jar:3.4.2-fix的解决方法
    淘淘商城学习
    spring Security简介
    ElasticSearch学习
    在Visual Studio中使用FFTW库
    FFTW程序Demo
  • 原文地址:https://www.cnblogs.com/2004-08-20/p/13826934.html
Copyright © 2011-2022 走看看