• 棋盘组合数


    在棋盘上,从点(0,0)走到(i,j)的方案数是C(i+j,i)。

    不接触某一条直线的方案数

    问题:求从点(0,1)走到点(i,j)且不接触直线y=x的路径方案数。

    我们可以取(i,j)关于直线y=x的对称点(j,i),可以发现每一条从(0,1)出发到(i,j)且接触了直线y=x的路径都对应了一条从(0,1)出发到(j,i)的路径,我们只需要把这条路径在最后一次接触直线后的那部分沿y=x翻折即可建立起这样一种对应关系。然后我们将从(0,1)到(i,j)任意走的方案数减去接触了直线的不合法方案数(即从(0,1)到(j,i)的方案数)即可得到合法方案数。 这个方案数为:(C(i+j-1,i)-C(i+j-1,i-1))

    不穿过某一条直线的方案数

    问题:从(0,0)出发到(i,j)且不穿过直线y=x的方案数。

    这时不穿过直线y=x等价于不接触直线y=x-1,所有我们取(i,j)关于直线y=x-1的对称点(j+1,i-1),那么每条不合法的路径就对应了一条从(0,0)到(j+1,i-1)的路径,那么我们就可以算出合法路径数为:(C(i+j,i)-C(i+j,i-1))

    其实就是要把那个点对称过去就可以对应到接触了直线的方案数

    题目:[NOI2018]冒泡排序


  • 相关阅读:
    动态传参
    函数的介绍
    文件的操作
    send email with formatted table
    minimize and close window with customed winform
    python algorithm
    something important about docker
    book list
    which language is suitable for what to do
    Find Duplicate Items in list fast
  • 原文地址:https://www.cnblogs.com/lishuyu2003/p/13285433.html
Copyright © 2020-2023  润新知