news 2026/5/10 8:38:13

打卡信奥刷题(3238)用C++实现信奥题 P8458 「REOI-p1」打捞

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3238)用C++实现信奥题 P8458 「REOI-p1」打捞

P8458 「REOI-p1」打捞

题目背景

出题人:XL4453

验题人:犇犇犇犇

文案:小糯米

upd:注意,先取模再取max

题目描述

“别介意,我和那些家伙都是打捞者。我们在头一次追寻梦想降落到地表时,就做好丧命的准备和赴死的觉悟了。”

葛力克一行人在一次打捞中,时来运转,获得了不少的宝藏。在归途之路,言及谁的功劳最大之时,大家却起了冲突。有人说自己的宝藏是史上绝无仅有,是在鬼门关前绕了一大圈才好不容易抢到的一个;有人说自己惨淡经营,虽然没有获得那么珍贵的宝物,但数量可观,也足以与之相提并论;也有人说自己的收获二者兼有,应当综合评价云云:总之,场面一片混乱,颇有生死与共的患难之交从此决裂的危险。

于是,大家把目光投到了葛力克的身上,这让他十分为难。思索良久,他决定这样来评价大家的贡献:

假设一共有n nn名打捞者,第i ii位打捞者a i a_iai取得的宝物数量为l i l_ili,而其中第p pp件宝物对应的价值则为a i , p a_{i,p}ai,p,那么在计算的时候只需要将每个序列相加求和即可。但是葛力克并不满足于现状,他现在想知道,如果是将两个人的贡献放在一起看待,那么又将如何计算呢?
一番激烈的头脑风暴后,他决定这样来计算两位打捞者i , j i,ji,j之间的贡献g ( i , j ) g(i,j)g(i,j):将a i a_iaia j a_jaj分别复制数遍使得两堆宝物的数量都为k kk,得到两个序列a i ′ , a j ′ a_i',a_j'ai,aj,则g ( i , j ) = ∑ p = 1 k a i , p ′ × a j , p ′ g(i,j)= \sum\limits_{p=1}^k a'_{i,p}\times a'_{j,p}g(i,j)=p=1kai,p×aj,p

现在葛力克想知道,这个贡献值的最大值是多少。

因为贡献值可能会很大,超出了正常生物大脑的运算能力,所以我们对它进行998244353 998244353998244353的取余。


形式化题面:给定一个整数n nn,和n nn个序列,第i ii个序列{ a i } \{a_i\}{ai}长度为l i l_ili,将每个a i a_iai复制k l i \dfrac k{l_i}lik遍得到{ a i ′ } \{a'_i\}{ai}使得{ a i ′ } \{a'_i\}{ai}的长度为k kk

试求:max ⁡ i = 1 , j = i + 1 i , j ≤ n { g ( i , j ) m o d 998244353 } \max\limits_{i=1,j=i+1}^{i,j\leq n}\{g(i,j)\bmod 998244353\}i=1,j=i+1maxi,jn{g(i,j)mod998244353},其中g ( i , j ) = ∑ p = 1 k a i , p ′ × a j , p ′ g(i,j)= \sum\limits_{p=1}^k a'_{i,p}\times a'_{j,p}g(i,j)=p=1kai,p×aj,p

输入格式

第一行两个整数n nnk kk

接下来输入n nn行。第i + 1 i + 1i+1行第一个数为l i l_ili,接下来输入l i l_ili个数,表示打捞者的宝藏a i a_iai

输出格式

一个整数,表示所求的最大值。

输入输出样例 #1

输入 #1

2 12 3 2 3 4 4 1 2 3 4

输出 #1

90

输入输出样例 #2

输入 #2

3 999999924 4 4 4 5 3 7 1 9 1 9 8 1 0 6 1 1 4 5 1 4

输出 #2

599517664

说明/提示

样例解释KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲1

a 1 ′ = 2 , 3 , 4 , 2 , 3 , 4 , 2 , 3 , 4 , 2 , 3 , 4 a_1'=2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4a1=2,3,4,2,3,4,2,3,4,2,3,4
a 2 ′ = 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 a_2'=1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4a2=1,2,3,4,1,2,3,4,1,2,3,4
g ( 1 , 2 ) = 2 × 1 + 3 × 2 + 4 × 3 + 2 × 4 + 3 × 1 + 4 × 2 + 2 × 3 + 3 × 4 + 4 × 1 + 2 × 2 + 3 × 3 + 4 × 4 = 90 g(1,2)=2\times1+3\times2+4\times3+2\times4+3\times1+4\times2+2\times3+3\times4+4\times1+2\times2+3\times3+4\times4=90g(1,2)=2×1+3×2+4×3+2×4+3×1+4×2+2×3+3×4+4×1+2×2+3×3+4×4=90

样例解释KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲2

g ( 1 , 2 ) m o d 998244353 = 599517664 g(1,2)\bmod998244353=599517664g(1,2)mod998244353=599517664
g ( 1 , 3 ) m o d 998244353 = 350889018 g(1,3)\bmod998244353=350889018g(1,3)mod998244353=350889018
g ( 2 , 3 ) m o d 998244353 = 66930325 g(2,3)\bmod998244353=66930325g(2,3)mod998244353=66930325
max ⁡ 1 ≤ i < j ≤ n { g ( i , j ) m o d 998244353 } = 599517664 \max\limits_{1\leq i < j \leq n}\{g(i,j)\bmod998244353\}=5995176641i<jnmax{g(i,j)mod998244353}=599517664

数据范围

对于10 % 10\%10%的数据,有n = 2 n=2n=2
对于30 % 30\%30%的数据,有k ≤ 100 k \leq 100k100
对于60 % 60\%60%的数据,所有l i l_ili两两互质,即gcd ⁡ ( l i , l j ) = 1 ( 1 ≤ i < j ≤ n ) \gcd(l_i,l_j)=1(1\leq i < j \leq n)gcd(li,lj)=1(1i<jn)gcd ⁡ \gcdgcd为最大公约数。
对于100 % 100\%100%的数据,有1 ≤ n ≤ 100 , 1 ≤ l i ≤ 1000 , 1 ≤ k , a i , j ≤ 10 9 1\leq n\le 100,1\leq l_i\le 1000,1\leq k,a_{i,j}\le 10^{9}1n1001li10001k,ai,j109且对于任意的i ∈ [ 1 , n ] , l i ∣ k i \in [1,n],l_i\mid ki[1,n],lik

C++实现

#include<bits/stdc++.h>#definelcm(x,y)x/__gcd(x,y)*y#definelb(x)(x&-x)#definestrto_stringusingnamespacestd;usingll=longlong;constdoubleEPS=1e-6,PAI=acos(-1.0);constintMAX=1e5+5,mod=1e9+7,MOD=998244353;vector<pair<int,vector<ll>>>q(MAX);intn;ll u,ans=0;voidsolve(){cin>>n>>u;for(inti=0;i<n;i++){intx;cin>>x;vector<ll>a(x);for(intj=0;j<x;j++){cin>>a[j];a[j]%=MOD;}q[i]={x,a};}for(inti=0;i<n;i++)for(intj=i+1;j<n;j++){intli=q[i].first,lj=q[j].first;auto&ai=q[i].second,&aj=q[j].second;ll g=__gcd(li,lj),a=li/g,b=lj/g,d=(li/g)*lj,f=(d?u/d:0),rem=u%d,sum=0,sr=0;for(intk=0;k<g;k++){ll sa=0,sb=0;for(into=0;o<a;o++)sa=(sa+ai[g*o+k])%MOD;for(into=0;o<b;o++)sb=(sb+aj[g*o+k])%MOD;sum=(sum+sa*sb)%MOD;}for(ll k=0;k<rem;k++){intidi=k%li,idj=k%lj;sr=(sr+ai[idi]*aj[idj])%MOD;}ll cur=(((f%MOD)*sum)%MOD+sr)%MOD;if(cur>ans)ans=cur;}cout<<ans<<'\n';}intmain(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);intt=1;while(t--)solve();return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 8:37:13

我的世界惊变100天整合包下载2026最新版

一、整合包整体概况 这款整合包适配我的世界 1.20.1 版本&#xff0c;以末日休闲生存为核心玩法&#xff0c;整合了多款趣味功能模组&#xff0c;保留游戏原版生存基础&#xff0c;同时加入环境变化、生物拓展、家园建造、物资存储等丰富内容。既可以单人慢慢体验长期生存玩法…

作者头像 李华
网站建设 2026/5/10 8:35:14

终极Blender 3MF插件指南:从零开始掌握3D打印文件格式转换

终极Blender 3MF插件指南&#xff1a;从零开始掌握3D打印文件格式转换 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否正在寻找一个简单、免费的解决方案&#xff…

作者头像 李华
网站建设 2026/5/10 8:34:37

零门槛实现Office文档预览:Vue-office终极使用指南

零门槛实现Office文档预览&#xff1a;Vue-office终极使用指南 【免费下载链接】vue-office 支持word(.docx)、excel(.xlsx,.xls)、pdf、pptx等各类型office文件预览的vue组件集合&#xff0c;提供一站式office文件预览方案&#xff0c;支持vue2和3&#xff0c;也支持React等非…

作者头像 李华
网站建设 2026/5/10 8:33:08

AI开发流程中的偏见识别与公平性实践:从数据到部署的全面解构

1. 项目概述&#xff1a;当技术开发流程成为偏见的“传送带”在人工智能领域摸爬滚打了十几年&#xff0c;我见过太多项目从“解决痛点”的雄心壮志开始&#xff0c;最终却在不经意间成为了放大社会不公的工具。这并非开发者心存恶意&#xff0c;而往往源于一套看似中立、标准化…

作者头像 李华
网站建设 2026/5/10 8:29:23

基于React的ChatGPT风格AI对话前端模板开发指南

1. 项目概述&#xff1a;一个为AI对话应用量身打造的前端模板如果你正在计划或已经着手开发一个类似ChatGPT的AI对话应用&#xff0c;那么前端界面的构建绝对是一个绕不开的“硬骨头”。从零开始设计一个既美观又流畅、还要兼顾复杂交互逻辑的聊天界面&#xff0c;其工作量不亚…

作者头像 李华