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

打卡信奥刷题(3005)用C++实现信奥题 P6221 [COCI 2019/2020 #6] Trener

P6221 [COCI 2019/2020 #6] Trener

题目背景

题目翻译来自 LOJ3270。

题目描述

译自 COCI 2019/2020 Contest #6 T5.Trener

我们已经知道了学生们喜欢睡觉。Patrik 是这一记录的保持者。在最后一个梦中,他发现自己成为了他最喜欢的球队的队长。

为了参加一场比赛,他把自己的所有球员分为N NN组,每组K KK名球员,对于第i ii组的球员,他们的姓氏长度都为i ii

现在,他要开始规划上场的球员组合了。一个组合有N NN名球员,并且组委会对上场的球队还有有以下要求:

  • 所有球员的姓氏长度必须不同。

  • 所有球员的姓氏必须为其他姓氏比他长一个字符的球员的连续子序列。

Patrik 想知道,自己最多能把这些球员分为多少支可以上场的队伍。答案对10 9 + 7 10^9+7109+7取模。

输入格式

输入第一行为两个整数N , K N,KN,K

接下来的N NN行,每行K KK个字符串,为球员的姓氏,保证第i ii行的字符串长度为i ii

输出格式

输出一行一个整数为最多分出的队伍支数,答案对10 9 + 7 10^9+7109+7取模。

输入输出样例 #1

输入 #1

3 2 a b ab bd abc abd

输出 #1

5

输入输出样例 #2

输入 #2

3 3 a b c aa ab ac aaa aab aca

输出 #2

6

输入输出样例 #3

输入 #3

3 1 a bc def

输出 #3

0

说明/提示

样例1 11说明:

可以分为如下队伍:

(a, ab, abc), (a, ab,abd), (b, ab, abc), (b, ab, abd), (b, bd, abd)


数据范围:

对于100 % 100\%100%的数据,1 ≤ N ≤ 50 1\le N\le 501N501 ≤ K ≤ 1500 1\leq K\leq 15001K1500

任务编号特殊限制分值
0 00为样例0 00
1 11N = 5 , K = 10 N=5,K=10N=5,K=1020 2020
2 22N = 50 , K = 100 N=50,K=100N=50,K=10030 3030
3 33无特殊限制。50 5050

C++实现

#include<bits/stdc++.h>#defineintlonglong#definepbpush_back#defineP1145141#defineULLunsignedlonglongusingnamespacestd;constintN=51,K=1600,mod=1e9+7;intn,k;intsum;intans[N][K];vector<int>G[K];ULL dt[N][K][3];ULLHash(chars[],inti,intlen){ULL res=0;for(;i<len;i++)res=res*P+s[i]-'a'+1;returnres;}signedmain(){chara[K];cin>>n>>k;for(inti=1;i<=k;i++){cin>>a;dt[1][i][2]=Hash(a,0,strlen(a));}for(inti=1;i<=k;i++)ans[1][i]=1;for(inti=2;i<=n;i++){for(intj=1;j<=k;j++){cin>>a;dt[i][j][0]=Hash(a,0,strlen(a)-1);dt[i][j][1]=Hash(a,1,strlen(a));dt[i][j][2]=Hash(a,0,strlen(a));for(intt=1;t<=k;t++)if(dt[i-1][t][2]==dt[i][j][0]||dt[i-1][t][2]==dt[i][j][1])G[j].pb(t);}for(intj=1;j<=k;j++)for(autot:G[j])ans[i][j]+=ans[i-1][t],ans[i][j]%=mod;for(intj=1;j<=k;j++)G[j].clear();}for(inti=1;i<=k;i++)sum+=ans[n][i],sum%=mod;cout<<sum<<endl;return0;}

后续

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

http://www.jsqmd.com/news/530452/

相关文章:

  • 2026头皮按摩设备采购指南:如何甄选技术型制造商? - 2026年企业推荐榜
  • 还在为降重头疼?试试这些AI辅助工具,打开新世界!
  • GitHub中文界面工具:突破语言壁垒的开源解决方案
  • 避坑指南:HBuilder X真机调试必知的ADB配置细节(支持WiFi连接版)
  • LLM·minimind-预训练
  • 洞见2026:玄奘之路戈壁徒步专业服务商全景解析与适配建议 - 2026年企业推荐榜
  • AcousticSense AI真实案例:民谣与乡村音乐在ViT-B/16特征空间中的聚类效果
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的技术博客系统的设计与实现
  • Tinke终极指南:NDS游戏文件编辑与资源提取的完整解决方案
  • 基于脉振高频电压注入法的永磁同步电机PMSM矢量控制模型 在d轴注入旋转高频电压信号,在q轴进...
  • 代码遗产规划师:在技术断代潮收割焦虑税
  • 终极指南:如何用DiffSynth Studio实现视频到3D骨架的智能转换
  • Chord视频时空分析工具效果展示:动态目标跨帧跟踪可视化案例
  • FigmaCN 技术架构深度解析:现代浏览器扩展本地化方案的设计与实现
  • AI原生应用领域:文本生成的前沿技术揭秘
  • BLE调试工具大比拼:nRF Connect vs BLE调试助手 vs LightBlue,哪个更适合你的项目?
  • OpenClaw七大配置:从SOUL、USER、AGENTS到MEMORY
  • AI审核驱动的IACheck:适老化改造工程检测报告如何实现更细致与可靠的质量把控
  • YapDatabase并发性能优化:如何在多线程环境中实现零阻塞
  • 风速仿真模型中的Sumlink仿真:风机仿真、风电机组模型、变桨控制与最大功率追踪控制,包含四...
  • 打卡信奥刷题(3006)用C++实现信奥题 P6225 [eJOI 2019] 异或橙子
  • 激光雕刻机未来几年,年复合增长率(CAGR)高达12.9%
  • GME-Qwen2-VL-2B-Instruct实操手册:电商详情页首图与卖点文案语义一致性检测
  • AppleRa1n:iOS 15-16设备iCloud激活锁一键绕过工具,让解锁更简单
  • Icarus Verilog仿真器完整指南:从零开始的数字电路设计终极教程
  • 圣女司幼幽-造相Z-Turbo入门必读:从CSDN博客获取文档、镜像与问题支持全链路
  • 告别混乱代码!Arduino IDE多文件开发避坑指南(从ino到h/cpp的平滑迁移)
  • Onekey:Steam Depot清单自动化获取的一站式解决方案
  • Fish-Speech-1.5实时语音合成展示:对话系统的流畅交互体验
  • BM25S4021-1 TDS水质传感器嵌入式驱动开发指南