上海计算机学会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;
}
相关推荐
半桔2 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
HABuo2 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
我在人间贩卖青春3 小时前
C++之多重继承
c++·多重继承
颜酱3 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919103 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878383 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
DuHz4 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女4 小时前
TRSV优化2
算法
代码游侠5 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472465 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法