当前位置: 首页 > news >正文

[ARC114 C] - Sequence Scores

一道狗屎的题目

问题陈述

对于长度为 NNN 的序列 AAA ,由 111MMM (包括)之间的整数组成,让我们定义 f(A)f(A)f(A) 如下:

  • 我们有一个长度为 NNN 的序列 XXX ,其中每个元素最初都是 000f(A)f(A)f(A) 是通过重复以下操作使 XXX 等于 AAA 所需的最小操作次数:

  • 指定 1≤l≤r≤N1 \leq l \leq r \le N1lrN1≤v≤M1 \le v \le M1vM ,然后为每个 l≤i≤rl \leq i \le rlir 替换 XiX_iXimax⁡(Xi,v)\max(X_i, v)max(Xi,v)

f(A)f(A)f(A) 对所有 MNM^NMN 序列 AAA 取模 998244353998244353998244353 的和。

思路:

首先,我们先举两个例子:

若此时N=5N=5N=5,序列AAA1,2,2,2,11,2,2,2,11,2,2,2,1,f(A)=?f(A)=?f(A)=?

若此时N=5N=5N=5,序列AAA2,1,1,1,22,1,1,1,22,1,1,1,2,f(A)=?f(A)=?f(A)=?

第一个例子,明显可以看出,可以现将所有数变为111,在将A[2−3]A[2-3]A[23](序列A下表为1≤i≤N序列A下表为1 \le i \le N序列A下表为1iN)变为二。所以f(A)=2f(A)=2f(A)=2

可是第二个例子就不一样了,此时,我们有两种选择。
1、先将A[N],A[1]A[N],A[1]A[N],A[1]变为222,再将A[2−3]A[2-3]A[23]变为111

2、先将A[1−N]A[1-N]A[1N]变为111,再将A[2],A[3]A[2],A[3]A[2]A[3]变为222

无论哪种选择,答案都为f(A)=3f(A)=3f(A)=3

由此:

1、当Ai=Aj(j≤i)A_i = A_j(j \le i)Ai=Aj(ji)且有Ak<Ai=Aj(j≤k≤i)A_k < A_i = A_j(j \le k \le i)Ak<Ai=Aj(jki)时,f(A)+1f(A)+1f(A)+1

2、当Ai=Aj(j≤i)A_i = A_j(j \le i)Ai=Aj(ji)且有Ak>Ai=Aj(j≤k≤i)A_k > A_i = A_j(j \le k \le i)Ak>Ai=Aj(jki)时,f(A)f(A)f(A)不变。

所以,现设fi,xf_{i,x}fi,x为在AiA_iAi处填上x,A[1−i]x,A[1-i]x,A[1i]段产生的贡献值。

fi,x=Mi−1−∑k=1i−1(M−x)i−k−1Mk−1f_{i,x}=M^{i-1}-\sum_{k=1}^{i-1}(M-x)^{i-k-1}M^{k-1}fi,x=Mi1k=1i1(Mx)ik1Mk1

其中,Mi−1M^{i-1}Mi1为在确定了AiA_iAi后的可能总数
∑k=1i−1(M−x)i−k−1Mk−1\sum_{k=1}^{i-1}(M-x)^{i-k-1}M^{k-1}k=1i1(Mx)ik1Mk1表示在Ak>Ai=Aj(j≤k≤i)A_k > A_i = A_j(j \le k \le i)Ak>Ai=Aj(jki)时,不会让f(A)f(A)f(A)改变的可能。Mk−1M^{k-1}Mk1即在1≤i<k1 \le i < k1i<k时,前面的数随意填。

我们接下来设元化简,以下化简过程,请自行理解(理解不了就别理解!):

Gi,x=∑k=1i−1(M−x)i−k−1Mk−1G_{i,x}=\sum_{k=1}^{i-1}(M-x)^{i-k-1}M^{k-1}Gi,x=k=1i1(Mx)ik1Mk1
因为Gi,x=∑k=1i−1(M−x)i−k−1Mk−1G_{i,x}=\sum_{k=1}^{i-1}(M-x)^{i-k-1}M^{k-1}Gi,x=k=1i1(Mx)ik1Mk1

Gi−1,x=∑k=1i−2(M−x)i−k−1Mk−1G_{i-1,x}=\sum_{k=1}^{i-2}(M-x)^{i-k-1}M^{k-1}Gi1,x=k=1i2(Mx)ik1Mk1

所以:Gi,x−Gi−1,x=Gi−1,x∗M+(M−x)i−2G_{i,x}-G_{i-1,x}=G_{i-1,x}*M+(M-x)^{i-2}Gi,xGi1,x=Gi1,xM+(Mx)i2

类似小学数学奥数中的错位相减法

ans(n)ans(n)ans(n)为最后答案。

则:ans(i)=ans(i−1)+∑j=1mfi,jans(i)=ans(i-1)+\sum_{j=1}^{m}f_{i,j}ans(i)=ans(i1)+j=1mfi,j

所以最后为:

ans(i)=ans(i−1)+∑j=1mMi−1−Gi,jans(i)=ans(i-1)+\sum_{j=1}^{m}M^{i-1}-G_{i,j}ans(i)=ans(i1)+j=1mMi1Gi,j

完结撒花 (作者已经接近窒息)

Sol:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,mod=998244353;
ll poww[5009][5009],ans[5009],dp[5009][5009];
int main()
{cin>>n>>m;for(ll i=0;i<=m;i++){poww[i][0]=1;for(ll j=1;j<=n;j++){poww[i][j]=poww[i][j-1]*i%mod;}}for(ll i=2;i<=n;i++){for(ll j=1;j<=m;j++){dp[i][j]=(dp[i-1][j]*m%mod+poww[m-j][i-2])%mod;}}for(ll i=1;i<=n;i++){for(ll j=1;j<=m;j++){ans[i]=(ans[i]+ans[i-1]+poww[m][i-1]-dp[i][j]+mod)%mod;}}cout<<ans[n];return 0;
} 
http://www.dtcms.com/a/427155.html

相关文章:

  • php网站开发实例教程 源码表格在网站后台是居中可到前台为什么不居中
  • 网站建设是什么?政务网站建设目的_意义
  • 【微调大模型】中的梯度概念
  • Android TabLayout使用记录
  • 打开这个你会感谢我的网站网络考试
  • 核心营销词库管理助力品牌提升竞争力
  • UNIX下C语言编程与实践19-UNIX 三级索引结构:直接索引、一级/二级/三级间接索引的文件存储计算
  • 有了实名制域名怎么做网站国内跨境电商公司排行榜
  • 每种字符至少取K个
  • random.gauss()函数和numpy.random.normal()函数生成正态分布随机数
  • 【C++】STL -- 仿函数的定义与使用
  • Linux新环境安装solana开发所需全部套件(持续更新)
  • 一个高性能的HTTP和反向代理服务器:Nginx
  • 人工智能客服应用如何重塑电商服务生态?智能AI软件带来的三大变革
  • 网站建设的注意学校网站开发方案模板
  • 分布式架构初识:为什么需要分布式
  • asp网站用ftp怎么替换图片办公室oa管理系统
  • 个性化的个人网站广州企业开办一网通
  • Transformer(一)---背景介绍及架构介绍
  • 【完整源码+数据集+部署教程】气动铣刀型号分类图像分割系统: yolov8-seg-C2f-SCConv
  • 【Android】强制使用 CPU 大核或超大核
  • 【算法竞赛学习笔记】基础概念篇:算法复杂度
  • SLA操作系统双因素认证实现Windows远程桌面OTP双因子安全登录—从零搭建企业级RDP安全加固体系
  • 现在主流的网站开发语言360房产网郑州官网
  • 石家庄哪个公司做网站好做外贸c2c网站有哪些
  • 伪路径约束
  • 新天力:以全链协同能力构筑食品容器行业领军优势
  • Markdown转换为Word:Pandoc模板使用指南
  • Cloudflare 开源 VibeSDK:开启“氛围编程”新时代的全栈 AI 应用生成平台
  • 汕头网站建设sagevis企业网站建设有什么好处