P5239 回忆京都(洛谷3月月赛T2)

本文介绍了一种针对组合数求和问题的高效算法。通过预处理杨辉三角及优化二维前缀和,实现了对大量组合数求和的快速计算。文章详细解释了算法原理,包括杨辉三角的递推公式和二维前缀和的维护方法,以及如何避免取模运算导致的负数问题。

题目描述

射命丸文在取材中发现了一个好玩的东西,叫做组合数。

组合数的定义如下:从n个不同元素中,任取m(mn)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合。所有组合的数量,就是组合数。

$\sum_{i=1}^n \sum_{j=1}^m C^i_j$,其中当i>j的时候,钦定$C^i_j$0

她也很快就算出来了,不过对自己的答案不是很充满信心,因此你决定帮助她。然而没事找事的她一下子算了q次对于不同的n,m的结果,因此这只能劳烦你了。由于你不打算真正地帮助她,你无需把答案对998244353取模,也无需对64123取模,只要告诉她对19260817取模之后的答案即可。

输入输出格式

输入格式:

第一行输入一个q,表示有q次询问。

第二行开始,一共q行,每行两个数字n,m,意思如题所示。

 

输出格式:

一共q行,对于每一个询问,都输出一个答案。

数据范围:n,m<=1000

solution

 容易想到预处理出杨辉三角, c[i][j]表示$c^j_i$ %mod,递推公式是c[i][j]=c[i-1][j]+c[i-1][j-1],注意处理c[i][0]=1;

这样每次询问是O(nm),总的时间复杂度是O(qnm),TLE3个点,需要优化

通过模拟发现,题目中要求的数的和实际上在杨辉三角中是一个矩形的区域,也就是右下角下标为c[m][n]

例如,当m=4,n=3时,就是矩形区域的和,所以只需要维护一个二维前缀和就行了

一个大坑:当预处理二维前缀和时因为经过了取模,所以容易出现新的前缀和为负数的情况,而我们希望得到的一定是个正数,所以每一项s[i][j]=(s[i][j]+mod)%mod;

因为这个坑WA了三个

code

#include<cstdio>
#include<iostream>
#include<cstring>
#define mod 19260817//咳咳 
#define maxn 1020
using namespace std;
long long s[maxn][maxn],ts[maxn][maxn];
int n,m,t,x,ans,tmp;
void init(int n)
{
    for(int i=0;i<=n;++i)
    {
        s[i][0]=1;
    }
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=n;++j)
        {
            if(j<=i) s[i][j]=(s[i-1][j]+s[i-1][j-1])%mod;//杨辉三角 
            
            ts[i][j]=(ts[i-1][j]+ts[i][j-1]-ts[i-1][j-1]+s[i][j]+mod/*关键*/)%mod;//二维前缀和 
        }
        
    }
          
         
}
int main()
{
    scanf("%d",&t);
    init(1010);//预处理杨辉三角与前缀和 
    for(int k=1;k<=t;++k)
    {
        scanf("%d%d",&n,&m);
        printf("%lld\n",ts[m][n]);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/Liuz8848/p/10465826.html

内容概要:本文详细介绍了一个基于C++的城市停车需求分析平台的设计与实现,旨在通过科学化手段解决城市停车资源紧张、管理低效等问题。平台采用块化架构,涵盖数据采集与融合、实时流式处理、数据存储与管理、智能分析与预测、可视化交互、安全防护、系统集成及运维监控八大核心块。通过C++高性能特性支持高并发、实时数据处理与复杂算法运算,结合时间序列预测(如加权移动平均)、聚类分析(KMeans)等算法实现停车需求预测与热点区域识别,并提供开放API接口支持系统扩展与外部集成。文中还给出了关键块的C++代码示例,包括数据清洗、多线程处理、数据查询与权限管理等。; 适合人群:具备C++编程基础、熟悉数据结构与算法的软件开发人员、城市交通系统研究人员及智慧城市相关领域的技术人员,尤其适合从事大数据处理、智能交通系统开发的1-5年经验从业者; 使用场景及目标:①构建高性能城市级停车资源管理平台,实现停车数据的实时采集、分析与预测;②为政府提供科学决策支持,优化停车设施布局与交通政策;③提升市民出行效率,减少道路拥堵与碳排放;④作为智慧城市建设中交通子系统的参考架构与技术实现方案; 阅读建议:此资源不仅提供完整的系统设计思路与型描述,还包含可运行的关键代码片段,建议读者结合实际开发环境动手实践,深入理解各块间的协同机制,并在此基础上进行功能扩展与性能优化,以适应不同城市规与业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值