1 条题解
-
0
自动搬运
来自洛谷,原作者为

RyanLi
跟着光,靠近光,成为光,散发光。搬运于
2025-08-24 21:16:06,当前版本为作者最后更新于2024-03-10 21:28:28,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Source & Knowledge
2024 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
题目大意
给定一些多选题的答案和作答,加入你从第 题开始作答,判断你可以拿到多少分。
题目分析
首先,我们要考虑如何计算得分。
先判断没有作答的情况。
考虑将作答设为 ,答案设为 。将两个数组相加,那么 表示这个位置是正确的。
一个完全正确的答案数组一定全部为 ,如果数组存在多余的 ,那么说明多涂。否则是部分正确的。
我们可以写出代码:
int check(int a[4],int b[4]){ int c[4],sum=0; for(int i=0;i<4;i++)sum+=b[i]; if(sum==0)return 0; for(int i=0;i<4;i++)c[i]=a[i]+b[i]; for(int i=0;i<4;i++) if(c[i]==-1)return 0; for(int i=0;i<4;i++) if(c[i]==1)return 3; return 6; }然后我们枚举每个起点,按照题意模拟判断即可。
std::cin>>n; for(int i=0;i<n;i++) for(int j=0;j<4;j++)std::cin>>a[i][j]; for(int i=0;i<n;i++) for(int j=0;j<4;j++)std::cin>>b[i][j],b[i][j]*=-1; for(int i=0;i<n;i++){ int ans=0; for(int j=0;j<n;j++) ans+=check(a[(i+j)%n],b[j]); std::cout<<ans<<" \n"[i==n-1]; }视频讲解
完整代码见视频题解
- 1
信息
- ID
- 9835
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者