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

CQUPT 2025级 数据科学与大数据技术英才班 周测#07

CQUPT 2025级 数据科学与大数据技术英才班 周测#07

A [CSP-J 2024] 扑克牌

做法很多,见题解:

  1. STL map
  2. STL set
  3. 数组模拟

B [CSP-J 2024] 地图探险

模拟一个类似 \(\text{DFS}\) 遍历 的过程

题解

C [CSP-J 2024] 小木棍

先看特殊性质:

  • 特殊性质 A:保证 \(n\)\(7\) 的倍数且 \(n\geq 100\)
  • 特殊性质 B:保证存在整数 \(k\) 使得 \(n=7k+1\),且 \(n\geq 100\)

不难猜测,最终答案需要分类讨论得到,依据就是 \(n\%7\) 的值

数字 0 1 2 3 4 5 6 7 8 9
木棍数 6 2 5 5 4 5 6 3 7 6

想要拼出的数字最小,首先保证位数最小,也就是用尽可能多的木棍拼成每一位

最优解就是用 \(7\) 个木棍拼成数字 \(8\),木棍数是 \(7\) 的多少倍,就拼出多少个 \(8\),猜测正确

为了保证数字最小,拼出的数字首位需要特殊判断一下

具体分类:题解

if(n%7==0)
{for(int i=1;i<=n/7;i++)printf("8");puts("");
}
else if(n%7==1)
{if(n/7==0) puts("-1"); else {printf("10");for(int i=1;i<=n/7-1;i++)printf("8");puts("");}
}
else if(n%7==2)
{printf("1");for(int i=1;i<=n/7;i++)printf("8");puts("");
}
else if(n%7==3)
{if(n/7==0) puts("7");else if(n/7==1) puts("22");else{printf("200");for(int i=1;i<=n/7-2;i++)printf("8");puts("");}
}
else if(n%7==4)
{if(n/7==0) puts("4");else{printf("20");for(int i=1;i<=n/7-1;i++)printf("8");puts("");}
}
else if(n%7==5)
{printf("2");for(int i=1;i<=n/7;i++)printf("8");puts("");
}
else if(n%7==6)
{printf("6");for(int i=1;i<=n/7;i++)printf("8");puts("");
}

另一种做法 动态规划:题解

D [CSP-J 2024] 接龙

题目比较难,但是至少可以拿 \(5-15\) 分。

测试点 \(1\)\(5\)

\(r=1\),不需要接龙,只要一个人,满足存在子序列从 \(1\) 开始,\(c\) 结束,长度在 \([2,k]\) 之间即可。

\(c=1\) 的情况需要特判一下。

for(int i=1;i<=n;i++)
{int pos=0;for(int j=1;j<=l[i];j++){if(c==1&&s[i][j]==c){if(pos&&2<=j-pos+1&&j-pos+1<=k) flag=true;pos=j; }else if(c!=1){if(s[i][j]==1) pos=j;else if(pos&&s[i][j]==c&&j-pos+1<=k) flag=true;						}}
} 
if(flag) puts("1");
else puts("0");
测试点 \(1\to 3\)\(15\)

\(n,r,\sum l,q\) 的范围都很小,用 \(\text{DFS}\) 枚举每一种情况就行了。

结合 \(r=1\) 的特判,就能拿到 \(15\) 分。

void dfs(int x,int st,int cnt)
{if(cnt==r){if(st==c) ans=1;return;}for(int i=1;i<=n;i++){if(i==x) continue;int pos=0;for(int j=1;j<=l[i];j++){if(pos&&2<=j-pos+1&&j-pos+1<=k) dfs(i,s[i][j],cnt+1);if(s[i][j]==st)	pos=j;}}
}
ans=0;
dfs(0,1,0);
printf("%d\n",ans);
正解:动态规划

题解,写得很清晰了

状态:\(dp[i][v]\) 表示第 \(i\) 轮以 \(v\) 结尾的情况

  • \(dp[i][v] = 0\):根本接不到 \(v\)
  • \(dp[i][v] = p\):只有第 \(p\) 个人能接到 \(v\)
  • \(dp[i][v] = -1\):有 **多种不同的人 **都能接到 \(v\)

状态转移:详见代码

  • 如果 \(dp[i-1][u] = -1\):任何人都能在第 \(i\) 轮把 \(u\) 当作起点(因为肯定存在一个 \(p' \neq p\) 也在上一轮接到了 \(u\))。
  • 如果 \(dp[i-1][u] = p\):除了第 \(p\) 个人,其他人都能把 \(u\) 当作起点。
  • 如果 \(dp[i-1][u] == 0\):死路,谁都不能用。

由于 \(1\leq n\leq 10^5,1 \leq l_i \leq 2\times 10^5\),不能用数组存 \(s[i][j]\),要用 vector

while(T--)
{	scanf("%d%d%d",&n,&k,&q);for(int i=1;i<=n;i++){s[i].clear();scanf("%d",&l[i]);for(int j=1;j<=l[i];j++){int x;scanf("%d",&x);s[i].push_back(x);maxc=max(maxc,x); }}for(int i=1;i<=q;i++){scanf("%d%d",&r[i],&c[i]);maxr=max(maxr,r[i]);maxc=max(maxc,c[i]);}for(int i=0;i<=maxr;i++)for(int j=1;j<=maxc;j++)f[i][j]=-1;f[0][1]=0;for(int i=1;i<=maxr;i++){for(int j=1;j<=n;j++){int cnt=0;for(int x:s[j]){if(cnt){if(f[i][x]==-1) f[i][x]=j;else if(f[i][x]!=j) f[i][x]=0; cnt--;}if(f[i-1][x]!=-1&&f[i-1][x]!=j) cnt=k-1;}}}for(int i=1;i<=q;i++){if(f[r[i]][c[i]]!=-1) puts("1");else puts("0"); }maxr=maxc=0; 
}
http://www.jsqmd.com/news/847499/

相关文章:

  • Agent IDE 演进路线图:Claude Code 在商业项目中落地的 3 大技术拐点
  • 告别GUI框架:在嵌入式Linux上用framebuffer手撸一个简易绘图库(附完整代码)
  • 从SPSS到R:临床医生/医学生的Cox回归迁移实战(含数据模拟与结果表格制作)
  • 别再让你的Qt界面有锯齿了!手把手教你用QPainter的Antialiasing和HighQualityAntialiasing
  • 2026年智能门窗厂家榜单好评分析 - 品牌推广大师
  • 视频49——设计模式之责任链模式
  • 农学人学java智能体第一天(1)
  • 避坑指南:STM32F4 HAL库驱动MPU6050,从GitHub标准库移植到DMA模式的完整记录
  • GitHub项目改名后,本地仓库如何无缝衔接?保姆级操作指南(含常见错误排查)
  • 网络安全课程笔记-3-Linux-中
  • 嵌入式学习的第八天
  • 基于RK2206的智能语音电子秤:嵌入式AI与高精度传感融合实践
  • Visual C++运行库合集:解决Windows程序依赖的终极方案
  • 高效解决Windows HEIC缩略图显示:3步实现跨平台照片管理
  • 20260519紫题训练总结 - Link
  • AirRC522_1000 RFID模块:串口免驱方案与ESP32物联网集成实战
  • RAG vs LoRA:AI产品选型困境终结者!产品经理必看的技术选型指南
  • 5个简单步骤:如何用MPC Video Renderer让你的普通显示器也能播放HDR电影
  • 深入解析Zircon微内核启动流程:从硬件初始化到用户态服务
  • Ubuntu 22.04版本下配置静态IP
  • CQUPT 2025级 数据科学与大数据技术英才班 周测#08
  • MATLAB里用Gurobi求解器?手把手教你从官网申请到YALMIP测试(附学术邮箱避坑指南)
  • Yuzu模拟器进阶设置指南:图形选项怎么调?多核CPU如何利用?让你的《王国之泪》帧数翻倍
  • 从源码到魔改:手把手教你为OpenCV Aruco模块添加自定义解码与抗干扰逻辑
  • 纳米压印技术在手性超构器件制造中的应用与工艺解析
  • 2026年10款国内无代码编程工具,企业无代码工具深度横评
  • Vitis HLS 综合报告(Syn Report)保姆级解读:从时序、资源到AXI接口,手把手教你读懂每一个表格
  • 终极指南:如何为OBS安装配置实时字幕插件实现无障碍直播
  • 洛谷P2765 思路分享(网络流,二分图匹配)
  • 嵌入式AI人才培养:产教融合如何破解软硬兼修难题