BZOJ 4403序列统计

news/发布时间2024/4/29 5:05:42

BZOJ-序列统计

$$HZOI$$

·题意

给你 \(n\) , \(l\) , \(r\) , 你可以于 \([ l , r ]\) 中选 \(n\) , 个数 , 组成的序列为不下降序列的个数 , 对 \(mod = 10^9 + 7\)

\(n \le 10^9 , l \le r \le 10 ^ 9\)

·题解

明显的得到式子:

\[ans = \sum^{n}_{i = 1}C^{i}_{r - l + 1 + i} \]

用杨辉三角化一下得到:

\[C^{n}_{n + r - l + 1} - 1 \]

code

#include<bits/stdc++.h>
#define int long long
#define lson ( id << 1 ) 
#define rson ( id << 1 | 1 )
using namespace std ; 
const int N = 1000010 ; 
const int mod = 1e6 + 3 ; 
namespace Combination
{int D[ N ] ; int nueyong[ N ] , sum_neo[ N ] , sum[ N ] ; inline void lear_neoyong( ){sum_neo[ 0 ] = sum_neo[ 1 ] = 1 ; nueyong[ 1 ] = 1 ; nueyong[ 0 ] = 1 ; sum[ 0 ] = sum[ 1 ] = 1 ; for( int i = 2 ; i < N ; ++ i ){int p = mod ; int k = p / i ; nueyong[ i ] = ( k * ( p - nueyong[ p % i ] ) ) % p ; sum_neo[ i ] = ( nueyong[ i ] * sum_neo[ i - 1 ] ) % p ; sum[ i ] = ( i * sum[ i - 1 ] ) % p ; }}int Quick_Pow( int alpha , int beta ){int ans = 1 ; while ( beta > 0 ){if( beta & 1 ) ans = ( ans * alpha ) % mod ; beta >>= 1 ; alpha = ( alpha * alpha ) % mod ;  }return ans ; }int Regular_C_of_Pow_Class( int n , int m ){int alpha = 1 , beta = 1 , rereturn = 0 ; if( m <= n && n >= 0 && m >= 0 ){for( int i = n - m + 1 ; i <= n ; ++ i ){alpha = ( alpha * i ) % mod ; }for( int i = 1 ; i <= m ; ++ i ){beta = ( beta * i ) % mod ; }   rereturn = ( alpha * Quick_Pow( beta , mod - 2 ) ) % mod ;  return rereturn ; }else return 0 ; }inline int jc( int x ){return sum[ x ] ; }   inline int neo_jc( int x ){  if( x == 0 ) return 1 ; return sum_neo[ x ] ; }int Regular_C_of_Inv( int n , int m ){return ( ( ( jc( n ) * neo_jc( n - m ) ) % mod ) * neo_jc( m ) ) % mod ; }int C_Lucas_Using_Inv( int n , int m ){if( m == 0 ) return 1 ; return ( Regular_C_of_Inv( n % mod , m % mod ) * C_Lucas_Using_Inv( n / mod , m / mod ) ) % mod ; }int C_Lucas_Using_Pow( int n , int m ){if( m == 0 ) return 1 ; return ( Regular_C_of_Pow_Class( n % mod , m % mod ) * C_Lucas_Using_Pow( n / mod , m / mod ) ) % mod ; }void Asking_for_Derangement( ){D[ 0 ] = 1 ; D[ 1 ] = 0 ; D[ 2 ] = 1 ; for( int i = 3 ; i < N ; ++ i ){D[ i ] = ( i - 1 ) * ( D[ i - 1 ] + D[ i - 2 ] ) % mod ; }}inline void Cleared( ){memset( D , 0 , sizeof( D ) ) ; memset( sum_neo , 0 , sizeof( sum_neo ) ) ; memset( sum , 0 , sizeof( sum ) ) ;  memset( nueyong , 0 , sizeof( nueyong ) ) ; }
} ; 
using namespace Combination ; 
inline int read( )
{int x = 0 , f = 1 ; char c = getchar( ) ; while ( c < '0' || c > '9' ){if( c == '-' ){f = -1 ; }c = getchar( ) ; }while ( c >= '0' && c <= '9' ){x = x * 10 + c - '0' ; c = getchar( ) ;  }return x * f ; 
}
int l , r , n , t ; 
signed main( )
{#ifndef ONLINE_JUDGEfreopen( "cjs.in" , "r" , stdin ) ; freopen( "cjs.out" , "w" , stdout ) ; #endift = read( ) ;while ( t -- ){n = read( ) ; l = read( ) ; r = read( ) ; int m = r - l + 1 ; cout << ( C_Lucas_Using_Pow( n + m , n ) - 1 + mod ) % mod << '\n' ; }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/41555788.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

C程序引申到编译器的过程

C程序引申到编译器的过程 MLIR与编译 主要内容: MLIR 控制流图(CFG) 静态单一分配(SSA) 数据流分析 汇编 mruby是用C编写的,因此每个操作码背后的逻辑都是用C实现的。为了从字节码编译Ruby程序,可以使用mruby C API的等价C程序。 某些操作码具有直接的API对应项,例如,…

UVM - 19 (callback)

内容改变UVM组件的功能行为pre_send - 用于注入error post_send - 用于收集coverage编写代码实现简单的回调操作定义一个new_driver extends driver,重写其中的pre_send和post_send方法UVM_callbacks不需要创建复杂的oop结构factory进行组件的覆盖 callbacks不是组件覆盖只是数…

UVM - 18(Review and Lab4)

testMakefileMakefile中定义变量,在运行Makefile的时候可以传入参数make verbosity=UVM_HIGHpacket继承自uvm_sequence_item 定义随机变量并创建约束test_baseVirtual interfaceinterface不能在class中进行例化,需要使用virtual interface virtual interface需要和实际的interf…

html5文本标签

标题文本 h1、h2、h3、h4、h5、h6 其中 h1、h2、h3是比较常用的。h3、h4、h5、h6相对来说用的会少一点,除非结构层次比较深才会使用。 段落文本 p <p>这是一个段落<p/> 强调文本 strong 和 em 尽量避免使用b代替strong,使用i代替em。它们表示的含义不一样 <s…

PyTorch 深度学习(GPT 重译)(六)

十四、端到端结节分析,以及接下来的步骤 本章内容包括连接分割和分类模型为新任务微调网络将直方图和其他指标类型添加到 TensorBoard从过拟合到泛化在过去的几章中,我们已经构建了许多对我们的项目至关重要的系统。我们开始加载数据,构建和改进结节候选的分类器,训练分割模…

Rasterization

三角面片 为什么是三角面片?三角形是最基本的多边形 保证在同一个面上 非常好的定义内外 非常容易定义插值光栅化 重要问题之怎么判断像素的中心点在三角形内? 叉积的结果应该同号 AliasingJaggies【锯齿】 Moire【摩尔纹】 Wagon Wheel Illusion 。。。。原因 最根本的原因是…