上海计算机学会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;
}
相关推荐
0+1113 分钟前
算法 --归并排序
数据结构·算法·排序算法
Run_Teenage11 分钟前
算法:树的重心、树的直径
算法
专注仿真12 分钟前
高代价计算后置:探测、交战、毁伤三条链路的统一设计哲学
算法·探测·毁伤
xie0510_12 分钟前
Any类简要实现
开发语言·c++·算法
在所不辞兄24 分钟前
为什么PINN非常适合求解有限元模型
人工智能·深度学习·神经网络·算法·机器学习
道尔柯南32 分钟前
C++ 入门基础详解:从第一个程序到核心语法特性
开发语言·c++
一棵树735135 分钟前
数据结构闲聊
数据结构·算法
bkspiderx35 分钟前
在 MFC 中添加自定义消息:从定义到使用的完整指南
c++·mfc·postmessage·sendmessage·mfc 中添加自定义消息·wm_app·on_message
bro_Java66637 分钟前
《二叉树的基础知识、操作方法与代码示例》
java·数据结构·算法·广度优先
纪念 2291 小时前
C++ string(三)
android·c++