ARC114C题解
简述题意
- 给你两个长为 的可重数列,一个叫 ,另一个叫 , 中的元素取值范围为 ,中的元素初始值都是 。
- 每次你可以选择 中的 区间,让他和 取 ,将这段区间里的数都变成这个最大值。
- 设 最少经过 次操作可以变成 ,问对于所有的 种 的 之和。
思路
- 将问题转化成给 里填数。
- 考虑每新来一个数 对我 的影响。
- 没有出现过,那么我的 应加一。
- 出现过,记录之前出现的位置为 ,那么如果对于 ,显然我可以通过对 操作来达到让这里变成 的目的(因为中间的数不会被影响,区间取 ),操作数不用加,反之则需要加一。
推式子
- 考虑如何求出每一个 ,因为我们知道什么情况下是不需要加一的,所以直接用总情况数减去不需要加一的情况就行了。记 表示在 的位置增加一个数 的操作数。
-
其中 枚举的是上一个 出现的位置, 表示所有比 大的数,他们可以在 任意分布,对于其他的 个位置随便放就行了。
-
这里有一个细节,对于每一个 这个式子是可以递推的,首先对于 每增大 我 的次方就多一,所以应该先乘上 其次我们可以把乘 单独拿出来,因为对于增大的 上一个和式和现在的和式之间只差一个 (抛去次方的变化来看)。
-
最后统计答案就只需要:
Code
#include <bits/stdc++.h>
#define Re register int
#define LL long long
#define fr(x, y, z) for(Re x = y; x <= z; x ++)
#define fp(x, y, z) for(Re x = y; x >= z; x --)
#define fuc(x, y) inline x y
#define WMX aiaiaiai~~
using namespace std;
namespace kiritokazuto {
fuc(char, getc)(){
static char buf[1 << 18], *p1, *p2;
if(p1 == p2){
p1 = buf, p2 = buf + fread(buf, 1, 1 << 18, stdin);
if(p1 == p2)return EOF;
}
return *p1++;
}
fuc(LL, read)() {
LL x = 0, f = 1;char c = getc();
while(!isdigit(c)){if(c == '-')f = -1; c = getc();}
while(isdigit(c)){x = (x << 1) + (x << 3) + (c ^ 48); c = getc();}
return x * f;
}
template <typename T> fuc(void, write)(T x){
if(x < 0)putchar('-'), x = -x;
if(x > 9)write(x / 10);putchar(x % 10 | '0');
}
}
using namespace kiritokazuto;
const int maxn = 1e5 + 1000, Inf = 2147483647, Mod = 998244353, lim = 2e5 ;
LL sum[5010];
LL lst, ans;
LL pows[5010];
int n, m;
signed main() {
n = read(), m = read();
pows[0] = 1;
int lim = max(n, m);
fr(i, 1, lim)pows[i] = pows[i - 1] * m % Mod, sum[i] = 1;
lst = m;
ans = 0;
fr(j, 1, m)ans = (ans + (lst + (pows[1] - sum[j] + Mod) % Mod) % Mod) % Mod;
fr(i, 3, n) {
lst = ans, ans = 0;
fr(j, 1, m)sum[j] = (sum[j] * (m - j) % Mod + pows[i - 2]) % Mod;
fr(j, 1, m)ans = (ans + (lst + (pows[i - 1] - sum[j] + Mod) % Mod) % Mod) % Mod;
}
write(ans);
return 0;
}
作者: kiritokazuto
出处:https://www.cnblogs.com/kiritokazuto/p/16867236.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!