上海计算机学会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;
}
相关推荐
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 - 09 函数对象保存状态并复用规则
开发语言·c++·算法·stl·函数对象
致Great6 小时前
DeepSeek Harness插件开发实战教程:我让它自己写了一个 arXiv 搜索插件
算法
ShineWinsu7 小时前
对于C++:auto_ptr、unique_ptr、shared_ptr的模拟实现
c++·面试·笔试·智能指针·unique_ptr·shared_ptr·auto_ptr
XLYcmy9 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
反转180度10 小时前
Qt 6 + C++17 实现 SFTP 批量部署:工业设备运维工具实战解析
运维·c++·qt
罗西的思考10 小时前
【Agent OS / AIOS】AOHP 深度解读:当 OS 开始为 Agent 而设计
人工智能·算法·机器学习
民乐团扒谱机11 小时前
【微实验】组合优化matlab实战(马科维茨投资模型):在收益与风险之间,寻找最优的人生配比
大数据·人工智能·算法·机器学习·数学建模·matlab·组合优化
码匠许师傅11 小时前
【C++ 面试真题】聊聊 C++ 的多继承与虚继承
开发语言·c++·面试
Nil20811 小时前
leetcode 160相交链表
算法·leetcode·链表
迷途之人不知返12 小时前
算法系列2:滑动窗口
算法