上海市计算机学会竞赛平台2024年11月月赛丙组线段数

题目描述

给定数组 a=a1,a2,⋯ ,ana=a1​,a2​,⋯,an​,Eve 可以执行任意次(可能 00 次)以下操作:

  • 选择 1≤i≤n1≤i≤n,令 ai←ai+1ai←ai+1。

Eve 希望最终数组中任意三个相邻元素之和都是 33 的倍数。

请求出需要达成目标所需的最小操作次数。

输入格式

第一行一个整数 nn。

第二行 nn 个整数 a1,⋯ ,ana1​,⋯,an​。

输出格式

一行一个整数表示答案。

数据范围

对于 30%30% 的数据,3≤n≤53≤n≤5。

对于 60%60% 的数据,3≤n≤10003≤n≤1000。

对于 100%100% 的数据,3≤n≤1053≤n≤105,1≤ai≤1091≤ai​≤109。

样例数据

输入:

3

1 3 5

输出:

0

说明:

1+3+5=9,是 3 的倍数,不需要操作。

输入:

10

2 3 10 25 12 7 10 12 1 46

输出:

3

说明:

对 i=4,7,10 分别操作一次。

详见代码:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int n;
int b[3][3];
int c[3][3];
int ans = 1e9;
int main() 
{
    cin >> n;
    for(int i = 1; i <= n; i++) 
    {
        int a;
        cin >> a;
        b[i % 3][a % 3]++;
    }
    for(int i = 0; i < 3; i++) 
    {
        for(int j = 0; j < 3; j++) 
        {
            for(int k = 0; k < 3; k++) 
            {
                if (j == k) continue;
                if (j > k) 
                {
                    c[i][j] += b[i][k] * (j - k);
                }
                if (j < k) 
                {
                    c[i][j] += b[i][k] * (j + 3 - k);
                }
            }
        }
    }
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++) 
        {
            for(int k = 0; k < 3; k++) 
            {
                if ((i + j + k) % 3 == 0) 
                {
                    ans = min(ans, c[0][i] + c[1][j] + c[2][k]);
                }
            }
        }
    }
    cout << ans;
    return 0;
}
相关推荐
QN1幻化引擎9 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
Rainy Blue8839 小时前
C转C++速成
c语言·c++·算法
txzrxz10 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色
gaosushexiangji10 小时前
数字图像相关DIC系统在结构振动模态测量中的应用
算法
KaMeidebaby10 小时前
卡梅德生物技术快报|如何制备单克隆抗体:小众禽类靶点单抗制备实操流程:双载体抗原交叉筛选完整工艺记录
人工智能·python·深度学习·算法·机器学习
北域码匠11 小时前
Karatsuba乘法超详细解析(原理+流程+性能分析+纯原生C#无第三方库完整实现)
算法·c#·大数乘法·高精度计算·数据结构与算法·分治算法·karatsuba 乘法
fpcc12 小时前
数据结构和算法—数学的应用
数据结构·c++·算法
皓月斯语12 小时前
B4451 [GESP202512 四级] 建造 题解
数据结构·c++·算法·题解
z小猫不吃鱼12 小时前
模型剪枝经典论文精读:DepGraph: Towards Any Structural Pruning
算法·机器学习·剪枝
Ulyanov13 小时前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头