zoukankan      html  css  js  c++  java
  • 神仙dcx出的一道题

    题目大意

    (;;)在一个坐标系上, 以((0, 0))为起点, 每走一步,可以从((x,y))走到((x+1,y),(x-1,y),(x,y+1),(x,y-1))中的一个点上, 问走(k)步到达((a, b))的方案数。

    题解

    我们发现题目中的移动方式很难处理。

    考虑到题目中的"走一步", 可以理解为:在曼哈顿距离的意义下, 移动一个单位长度的距离。
    那么改成切比雪夫距离下移动一个单位长度的距离, 就变成了:每一步可以从((x, y))走到((x+1, y-1), (x-1, y+1), (x-1, y-1), (x+1, y+1))

    考虑这样一个问题: 在数轴上, 从原点出发, 每次可以向前或向后移动一步, 走(k)步走到(n)的方案数, 显然答案是({k choose (k-n) / 2})

    于是我们可以对横、纵坐标分别这样算一遍, 然后相乘。

    于是我们只用使切比雪夫距离与曼哈顿距离等价就行了, 于是我们可以将原坐标系上的每个点((x, y)), 变成((x + y, x - y)), 这样新坐标系的任意点之间切比雪夫距离与原坐标系的曼哈顿距离就相等了

    于是最终答案就是:({k choose (k-a-b) ;/; 2} imes {k choose (k-a+b) ;/; 2})

  • 相关阅读:
    CF351A Jeff and Rounding 思维
    CF352B Jeff and Periods 模拟
    CF352A Jeff and Digits
    小B的询问 莫队分块
    小凯的疑惑 数学
    BestCoder Round #80 待填坑
    [SDOI2009]HH的项链 树状数组 BZOJ 1878
    Blocks poj 区间dp
    [USACO5.4]奶牛的电信Telecowmunication 最小割
    数位dp
  • 原文地址:https://www.cnblogs.com/2016gdgzoi509/p/11291407.html
Copyright © 2011-2022 走看看