(上不了p站我要死了,侵权度娘背锅)
Description
给定三个正整数N、L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量。输出答案对10^6+3取模的结果。
Input
输入第一行包含一个整数T,表示数据组数。
第2到第T+1行每行包含三个整数N、L和R,N、L和R的意义如题所述。
1≤N,L,R≤10^9,1≤T≤100,输入数据保证L≤R。
Output
输出包含T行,每行有一个数字,表示你所求出的答案对10^6+3取模的结果。
Sample Input
2
1 4 5
2 4 5
Sample Output
2
5
//【样例说明】满足条件的2个序列为[4]和[5]。
好吧。。。我自己根本想不出来
如果单调不降难以求出来,而单调上升很容易求出来,那么为什么不把单调不降转为单调上升呢?
把第i位加上i,于是就将问题转为了在[l+1,r+n]中选n个不同的数出来,按从小到大的顺序排列。方案数为C(r-l+n,n)。
然后要求长度为1~n的方案数
全部列出来:

该博客讨论了如何计算长度在1到N之间,元素在L到R之间的单调不降序列数量。通过将问题转化为计算单调上升序列,并利用组合数的添项拆项和化项技巧,将原问题简化为在[l+1, r+n]中选择n个不同的数。博客提供了样例输入输出以及代码实现,强调了将复杂问题转换为简单问题的解决思路。"
107025359,5031159,Ubuntu下使用Anaconda搭建Python环境及远程调试,"['Python', 'Ubuntu', '开发环境', 'conda管理', '远程调试']
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



