上海计算机学会2021年1月月赛C++丙组T4三倍游戏

题目描述

三倍游戏是一种单人游戏。玩家会得到 n 个整数a1​,a2​,...,an​。玩家从这些整数中挑出两个数字相加,如果它们的和是 3 的倍数,则可以将这两个整数消除,如此反复,直到不能再消除数字为止。

请问玩家最多能消除多少对数字?

输入格式

第一行:单个整数 n;

第二行:n 个整数a1​,a2​,⋯,an​。

输出格式

单个整数表示答案。

数据范围
  • 1≤ai≤1,000,000;
  • 对于 50%50% 的数据,1≤n≤1000;
  • 对于 100%100% 的数据,1≤n≤100000。
样例数据

输入:

4

1 3 3 2

输出:

2

输入:

6

1 1 1 1 1 1

输出:

0

说明:

无法消除

解析

本题关键点:两数之和是3的倍数,分2种情况分析:一是2个都是3的倍数,二是其中一个是3的倍数+1,另一个是3的倍数+2.。代码如下。

cpp 复制代码
#include <iostream>
using namespace std;
int n,x,ans;
int a[3];
int main() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> x;
        a[x % 3]++;
    }
    ans = a[0] / 2 + min(a[1], a[2]);
    cout<<ans<<endl;
    return 0;
}
相关推荐
kebidaixu13 小时前
两轮BMS 短路保护策略详解
算法
王老师青少年编程13 小时前
2026年6月GESP真题及题解(C++二级):完全平方数计数
c++·题解·真题·gesp·二级·2026年6月·完全平方数计数
zwenqiyu13 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
z小猫不吃鱼13 小时前
03 Optimal Brain Surgeon 详解:Hessian 剪枝为什么有效?
算法·机器学习·剪枝
硕风和炜13 小时前
【LeetCode: 1301. 最大得分的路径数目 + DP】
java·算法·leetcode·动态规划·dp·记忆化搜索
用户990450177800914 小时前
做了一个AI诊断,参考倪海厦中医理论,科学养生
算法
努力中的编程者14 小时前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector
没文化的阿浩14 小时前
【C++】详解继承机制
开发语言·c++
weixin_4000056014 小时前
RL-frenet-trajectory-planning-in-CARLA
人工智能·深度学习·算法·机器学习·自动驾驶
Keven_1114 小时前
AcWing算法提高课思路速查:动态规划
算法·动态规划