P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

// Problem: P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1328#submit
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// User: Pannnn
#include <bits/stdc++.h>
using namespace std;
int main() {
// 使用二维数组存储a对b猜拳各种情况下的结果
int res[5][5] = {
{0, -1, 1, 1, -1},
{1, 0, -1, 1, -1},
{-1, 1, 0, -1, 1},
{-1, -1, 1, 0, 1},
{1, 1, -1, -1, 0}
};
int n, na, nb;
cin >> n >> na >> nb;
vector<int> a(na);
vector<int> b(nb);
for (int i = 0; i < na; ++i) {
cin >> a[i];
}
for (int i = 0; i < nb; ++i) {
cin >> b[i];
}
int cntA = 0, cntB = 0;
for (int i = 0; i < n; ++i) {
// a[i % na]是本次a出拳,出拳序列为循环,可以用取余拿到
if (res[a[i % na]][b[i % nb]] == 1) {
++cntA;
} else if (res[a[i % na]][b[i % nb]] == -1) {
++cntB;
}
}
cout << cntA << " " << cntB << endl;
return 0;
}
/*
错误的写法:
1.
vector<int> a(n);
for (int i = 0; i < na; ++i) { cin >> a[i]; }
可能n比na小,越界。
2.
vector<int> a(n);
for (int i = 0; i < na && i < n; ++i) { cin >> a[i]; }
避免了越界,但n比na小,有数据还在流内,读到下一个vector中。
*/
posted @   Pannnn  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
-->
点击右上角即可分享
微信分享提示