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

可 选 的 一 周 长 度 有 [ 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

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

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

B. Magical Calendar(数学计数,图解)_第1张图片

#include 
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<

你可能感兴趣的:(div题解)