2 条题解

  • 0
    @ 2023-4-27 21:59:42

    前缀和

    #include<bits/stdc++.h>
    using namespace std;
    int T,k,n,m;
    int c[2005][2005];
    int sum[2005][2005];
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cin>>T>>k;
    //组合数求解
    	for(int i=0;i<=2001;i++)
    		for(int j=0;j<=i;j++)
    			if(i==0||i==j)
    				c[i][j]=1;
    			else
    				c[i][j]=(c[i-1][j-1]+c[i-1][j])%k;
    //二维前缀和求解
    	for(int i=1;i<=2001;i++)
    		for(int j=1;j<=2001;j++)
    			if(c[i][j]==0&&j<=i)//注意算组合数时满足j<=i
    				sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+1;
    			else
    				sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1];
    	while(T--)
    	{
    		cin>>n>>m;
    		cout<<sum[n][m]<<"\n";
    	}
    	return 0;
    }
    
    • @ 2023-4-28 17:27:29

      可以在```后面加个cpp,这样字体就有C++的格式的颜色了

    • @ 2023-4-28 17:34:12

      原来如此,太巨了!!!谢谢陈巨大佬的浇浇!!!@

信息

ID
150
时间
1000ms
内存
512MiB
难度
7
标签
递交数
48
已通过
12
上传者