A题补题注意事项!数据有坑!!!

卡了我一下午

老实了

附上ac代码

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#include <math.h>

#include <iomanip>

#include <cctype>

#include <string>

#include <cstdio>

#include <vector>

#include <ctime>

#include <queue>

#include <map>

#include <stack>

#include <iostream>

#include <list>

#include <algorithm>

#include <bitset>

#include <unordered_map>

using namespace std;

#define int long long

typedef unsigned long long ull;

int a[5005], b[5005];

int dp[5005][5005];

int maxx[5005][5005];

int val[5006], preval[5006], qval[5006];

const int mod = 998244353;

int qpow(int x, int n, int mod)

{

if (n == 0) return 1;

if (n == 1) return x;

int ans = qpow(x, n / 2, mod);

ans = ans * ans % mod;

if (n % 2) ans = ans * x % mod;

return ans;

}

signed main() {

ios::sync_with_stdio(0);

cin.tie(0); cout.tie(0);

int n, st;

cin >> n >> st;

int r;

for (r = 1; r <= n; r++) cin >> a[r];

for (r = 1; r <= n; r++) cin >> b[r];

for (r = 1; r <= n; r++) maxx[r][r] = a[r];

dp[st][st] = 1;

int total_ans = 0;

for (int len = 2; len <= n; len++)

{

int K = n - len;

preval[0] = 1;

for (r = 1;r <= K;r++)

{

val[r] = (b[r] + b[r + len]) % mod;

if (val[r] == 0) val[r] = 1; // 【加入这一行,免疫除零污染】

preval[r] = (preval[r - 1] * val[r]) % mod;

}

int allinv = qpow(preval[K], mod - 2, mod);

for (r = K;r >= 1;r--)

{

qval[r] = preval[r - 1] * allinv % mod;

allinv = allinv * val[r] % mod;

}

for (int s = 1; s + len - 1 <= n; s++)

{

int e = s + len - 1;

maxx[s][e] = max(maxx[s + 1][e], maxx[s][s]);

if (s > st || e < st) continue;

int gl1 = 0;

if (dp[s + 1][e])

{

if (e != n) gl1 = (dp[s + 1][e] * b[s] % mod * qval[s] % mod);

else gl1 = dp[s + 1][e];

}

int gl2 = 0;

if (dp[s][e - 1])

{

if (s != 1) gl2 = (dp[s][e - 1] * b[e] % mod * qval[s - 1] % mod);

else gl2 = dp[s][e - 1];

}

dp[s][e] = (gl1 + gl2) % mod;

if (maxx[s][e] > maxx[s + 1][e]) total_ans = (total_ans + gl1) % mod;

if (maxx[s][e] > maxx[s][e - 1]) total_ans = (total_ans + gl2) % mod;

}

}

cout << (1 + total_ans) % mod << '\n';

return 0;

}

全部评论
牛魔吧,发代码不用代码块
1 回复 分享
发布于 04-28 17:20 北京

相关推荐

“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25&nbsp;-&nbsp;3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special&nbsp;Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务