ABC399F - Range Power Sum 题解

AtCoder ABC339 A-E题解 AtCder ABC339题解 阅读详情

题意

给定 n,k 和长度为 n 的序列 A ,求:

$$
\sum_{1\le l\le r\le n} (\sum_{l\le i\le r}A_i)^k
$$

思路

DP+推式子+二项式定理。

假设:

$$
S_i=\sum_{i=1}^n A_i 
$$

$$
f_{i,B}=\sum_{l=1}^i(S_i-S_{l-1})\\
=\sum_{l=1}^{i-1}(S_i-S_{l-1})^B+(S_i-S_{i-1})^B\\
=\sum_{l=1}^{i-1}(S_{i-1}-S_{l-1}+A_i)^B+A_i^B\\
$$

即答案为:

$$
\sum_{i=1}^n f_{i,B}
$$

由二项式定理,得:

$$
\sum_{l=1}^{i-1}(S_{i-1}-S_{l-1}+A_i)^B\\
=\sum_{l=1}^{i-1}\sum_{k'=0}^B\text{C}^{k'}_BA_i^{(B-k')}(S_{i-1}-S_{l-1})^{k'}\\
=\sum_{k'=0}^B\text{C}^{k'}_BA_i^{(B-k')}\sum_{l=1}^{i-1}(S_{i-1}-S_{l-1})^{k'}\\
=\sum_{k'=0}^B\text{C}^{k'}_BA_i^{(B-k')}f_{i-1,k'}\\
$$

计算 f_{i,B} :

$$
f_{i,B}\\
=\sum_{l=1}^{i-1}(S_{i-1}-S_{l-1}+A_i)^B+A_i^B\\
=\sum_{k'=0}^B\text{C}^{k'}_BA_i^{(B-k')}f_{i-1,k'}+A_i^B\\
$$

代码

#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int MOD=998244353;
int c[15][15];
int f[200010][15];
int a[200010];
void Inital(){
    c[0][0]=1;
    for(int i=1;i<=12;i++){
        for(int j=0;j<=i;j++){
            c[i][j]=c[i-1][j]+c[i-1][j-1];
            c[i][j]%=MOD;
        }
    }
}//求组合数 C(i,j)
int mypow(int x,int y){
    if(y==0)return 1ll;
    int k=mypow(x,y/2);
    if(y%2==0)return k*k%MOD;
    else return k*k%MOD*x%MOD;
}
signed main(){
    Inital();
    int n,k;
    scanf("%lld%lld",&n,&k);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    f[1][0]=1;
    for(int i=1;i<=k;i++){
        f[1][i]=f[1][i-1]*a[1]%MOD;
    }
    for(int i=2;i<=n;i++){
        f[i][0]=i;
        for(int B=1;B<=k;B++){
            for(int kp=0;kp<=B;kp++){
                f[i][B]+=c[B][kp]*mypow(a[i],B-kp)%MOD*f[i-1][kp]%MOD;
                f[i][B]%=MOD;
            }
            f[i][B]+=mypow(a[i],B);
            f[i][B]%=MOD;
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=f[i][k];
        ans%=MOD;
    }
    printf("%lld\n",ans);
    return 0; 
} 

【信息科学与工程学】计算机科学与自动化——第三十五篇 调度理论和调度算法01——资源调度算法 算法逻辑 阅读详情

相关推荐

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 229

无痛学线性代数

无痛学线性代数

青少年趣味编程 1333

JeecgBoot漏洞利用工具解析:一键getshell原理与安全加固实践

在应用安全领域,远程代码执行(RCE)和文件上传漏洞是Web系统面临的高危威胁,其核心原理在于对用户输入的控制不足或安全校验缺失。攻击者通过构造恶意请求,可绕过系统边界,在服务器上执行任意命令或上传恶意文件,从而获取系统控制权。这类漏洞的技术价值在于揭示了应用层安全防护的薄弱环节,其利用方式自动化、集成化趋势明显,极大地提升了攻击效率。在低代码开发平台等快速构建的业务系统中,此类风险尤为突出。应用场景广泛覆盖安全测试、渗透评估与应急响应。本文聚焦于JeecgBoot平台的历史高危漏洞,深入解析其SQL注入、

weixin_30787531的博客 552

ABC399.E题解

首先考虑是否有解, 然后再考虑最小操作步数, 观察什么情况下无解, 如果对于。一定无解(因为两个相等字符无法变为不同的字符), 假设有两个字符串。使得两个字符串相等, 因为无论变换哪个字符, 都会使得串中出现。, 然后变后面的字符, 最后换回来, 类似于。是可以的, 因为可以。

Ayanami_Rei的博客 412

离线安装ambari 更换spark版本 集成carbondate文档

1、Linux系统环境配置 1.1 配置IP地址 vim /etc/sysconfig/network-script/ifcfg-eth0 “DEVICE”:网卡对应的设备别名,如ifcfg-eth0第一块网卡; “HWADDR”:网卡物理地址; “BOOTPROTO”:网卡获得ip地址的方式,Static(静态 ip地址)dhcp(通过dhcp协议获取ip)bootip通过boot...

weixin_44742962的博客 3036

手把手教你用Arduino搭建惠斯通电桥:从原理到代码实现(附完整电路图)

本文详细介绍了如何利用Arduino搭建惠斯通电桥,从硬件选型、电路设计到代码实现和校准技巧,提供完整的电路图和实用代码示例。特别适合电子爱好者和创客学习高精度电阻测量技术,并扩展应用于应变片测量和温度监测等实际项目。

o4p5q6r7s的博客 400

abc398赛后笔记

我们再算距离的时候,其实就是算两节点深度与最近公共祖先的深度的差值之和,倘若换作根节点充当“最近公共祖先”,答案只会被多算两遍最近公共祖先到根节点的距离,又因为我们只考虑这个距离的奇偶性,所以这其实是没有影响的,由此这一步判断是否可行就可以。最极端的情况,每秒产生一团烟雾,直接莫提肯定是行不通的,因为我们此时是以篝火和高桥作为参照物的,移动的是超多的烟雾。根据样例可以发现,门的大小取决于墙长度的奇偶性(奇数的装一个门,双数的装双开门),发现这点后,按照题意模拟即可。看到题目的第一眼,我想到的是按题目模拟。

2401_87226921的博客 975

瑞萨RH850/U2A8以太网模块mcal说明

如下所有功能的支持需要在达芬奇中开启EthGlobalTimeSupport。秒[32bit], 纳秒[32bit], 纳秒小数[20bit]每一帧发送数据的相关结构缓冲区都放在变量。每一帧接收数据的相关结构缓冲区都放在变量。

至道无难,唯嫌拣择。 1860

【题解】AtCoder At_abc399_d [ABC399D] Switch Seats

这道题难度不大,个人感觉是普及提高−\color{gold}普及/提高-普及提高−左右。最后,希望这篇题解对你有帮助,如有想法欢迎评论或私信提出!

OI 生涯中的一些笔记和题解。 1297

Ubuntu22.04 网络图标消失与连接故障排查指南(附实战修复流程)

本文详细介绍了Ubuntu22.04系统中网络图标消失与连接故障的排查与修复方法。通过ifconfig、dhclient等命令诊断问题,提供从紧急恢复网络连接到深度排查的完整解决方案,帮助用户快速恢复网络功能并预防类似问题再次发生。

weixin_28481133的博客 287

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

[ABC399F] Range Power Sum题解

题目要求计算所有子数组和的K次方之和模998244353。给定长度为N的序列A和整数K,需要高效计算∑(∑A[l..r])^K对所有1≤l≤r≤N的和。通过预处理前缀和b[i]及其各次幂的前缀和数组c[i][j],并利用二项式分解公式,可以在O(NK^2)时间内完成计算。示例中当N=3,K=2时,结果为32+12+22+42+32+62=75。关键思路是维护前缀和及其幂次的前缀和,避免重复计算。

bz02_2023f2的博客 487

【Microchip】微芯 MPLAB® X IDE开发环境新建项目(点亮1颗LED灯)(常用右键菜单快捷键)

1.新建项目2. 选择芯片型号和调试器3.选择编译器4.项目命名和选择文件路径5.新建成功,给项目添加main.c7.将新建的mainXC16.c文件添加进项目6000000UL这三个就是。

Naiva的博客 451

浅谈二项式定理·题解:AT_abc399_f [ABC399F] Range Power Sum

二项式定理(英语:binomial theorem),又称牛顿二项式定理,由艾萨克·牛顿于1664年、1665年间提出。该定理给出两个数之和的整数次幂诸如展开为类似项之和的恒等式。二项式定理可以推广到任意实数次幂,即广义二项式定理(x+y)n=Σr=0nCnran−rbr=Cn0an+Cn1an−1b+⋅⋅⋅+Cnran−rb+Cnnbn (x+y)^{n} = \Sigma_{r = 0}^{n}C_{n}^{r}a^{n-r}b^{r} = C_{n}^{0}a^{n} + C_{n}^{1} a^

MorningLa的博客 1056

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 239

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 221

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 391

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 337

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 346

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 382

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 304

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 437

#SQLite 数据库笔记一:(概念 / 终端指令 / SQL 语句 / C 编程 / 回调函数)

数据库 = 数据的仓库,假设数据是海量。能力说明存储数据持久化保存,程序退出数据还在统计数据、分组、排序数据管理增、删、改、查(CRUD)嵌入式设备上也会用数据库(单片机网关、路由器、工业 HMI 都常见),因为 sqlite 体积小、无需服务进程、单文件即可。数据库 = 库 > 表 > 记录(行) > 字段(列)sqlite3 = 开源、C 写的、单文件、免安装、最多 2T 的嵌入式关系型数据库。

lwq20051110的博客 205

【C++】【STL】string_OJ题

本文总结了9道C++ STL中关于string的OJ题目,按操作类型分为三组:反转与就地修改(如917、541、151)、计数与查找(如387、125、58)、模拟与大数运算(如415、43、8)。核心技巧包括双指针收敛、字符分类处理、进位控制及边界值处理。所有题目使用同一套源码,在标准库std::string与自定义容器MyString间切换仅需宏定义,验证结果一致性。代码通过随机测试用例与Trace函数逐行比对,确保逻辑正确性,强调接口对齐的重要性。

这里是Cocatrice的博客,感谢大家一直以来的支持和鼓励,如果对C/C++方向感兴趣的话,可以通过主页的微信名片加Cocatrice的好友,也可以通过邮箱:Chen31980094@163.com 联系,一同加油! 4371

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 371

【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针

C++类与对象知识(面向过程和面向对象的初步认识,类的初步认识,类的访问限定符及封装,类的作用域、实例化,类的对象模型,this指针)

2601_96587588的博客 880
下一篇: ABC400F - Happy Birthday! 3 题解
bitsetint
博客等级 码龄2年 13粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值