B. Magical Calendar(数学计数,图解)

    技术2022-07-12  89

    可 选 的 一 周 长 度 有 [ 1 , r ] 可选的一周长度有[1,r] [1,r]

    放 n 天 , 有 多 少 种 形 状 ? 放n天,有多少种形状? n,?

    分析

    首先对于固定的n和固定的周长k,假如确定了在一周的第几天开始涂色

    接下来就只能固定一行一行涂色,只有一种可能性

    假 如 周 长 是 1 , 只 有 一 种 可 能 就 是 一 列 摆 放 假如周长是1,只有一种可能就是一列摆放 1,

    假 如 周 长 是 2 , 那 么 可 以 从 一 周 的 第 一 天 开 始 涂 色 , 也 可 以 从 第 二 天 开 始 涂 色 假如周长是2,那么可以从一周的第一天开始涂色,也可以从第二天开始涂色 2,,

    假 如 周 长 是 n , 可 以 从 第 i ∈ [ 1 , n ] 天 开 始 涂 色 假如周长是n,可以从第i\in[1,n]天开始涂色 n,i[1,n]

    所 以 一 般 来 说 , 方 案 数 构 成 一 个 等 差 数 列 , 答 案 是 r ∗ ( r + 1 ) / 2 所以一般来说,方案数构成一个等差数列,答案是r*(r+1)/2 ,,r(r+1)/2

    但 是 , 有 特 殊 情 况 \color{Red}但是,有特殊情况 ,

    当 r 大 于 等 于 n 时 当r大于等于n时 rn

    如 果 我 们 选 择 的 周 长 i ∈ [ n , r ] , 所 有 的 这 些 只 有 一 种 可 能 如果我们选择的周长i\in[n,r],所有的这些只有一种可能 i[n,r],

    就 是 从 第 一 天 开 始 放 , 在 一 行 内 放 满 n 天 就是从第一天开始放,在一行内放满n天 ,n

    其 余 时 候 从 第 二 天 以 后 开 始 放 置 , 最 多 只 能 延 伸 到 下 一 行 , 且 这 两 行 都 小 于 n 其余时候从第二天以后开始放置,最多只能延伸到下一行,且这两行都小于n ,,n

    这 种 可 能 性 已 经 在 前 面 计 算 过 了 这种可能性已经在前面计算过了

    如 果 有 疑 惑 , 请 看 下 面 的 这 种 图 , 是 不 是 一 定 会 和 前 面 重 复 ? 如果有疑惑,请看下面的这种图,是不是一定会和前面重复? ,,?

    #include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; ll t,n,r; int main() { cin >> t; while(t--) { cin >> n >> r; if(r>=n) { r=min(n-1,r); cout<<r*(r+1)/2+1<<endl; } else cout<<r*(r+1)/2<<endl; } }
    Processed: 0.010, SQL: 9