首页 > 其他分享 >HNUCM-OJ(2462:毕业拍照)

HNUCM-OJ(2462:毕业拍照)

时间:2024-06-15 21:05:07浏览次数:13  
标签:OJ 2462 奇数 ++ 个数 偶数 ans HNUCM include

题目描述

a碟和菜菜的班级正在准备拍毕业照,他们班一共有N个同学。

为了方便表示,每个同学有一个范围在1-100之间的编号,编号可能重复。

菜菜对拍照有一个构思:她希望将所有的同学分到各个不同的组中,并将这些组排成一行,使得第一组的同学的编号之和为偶数,第二组的编号之和为奇数......奇偶交替。

菜菜可以分成的最大组数是多少?

输入

输入的第一行包含 N(2≤N≤1000)。

下一行包含 N个空格分隔的整数,为N个同学的编号。

输出

输出照片中的最大组数。

可以证明,至少存在一种符合要求的分组方案。

样例输入 Copy
7
1 3 5 7 9 11 13
样例输出 Copy
3

思路(题型:思维题)

根据偶数奇数排列,那么最大的组数就是一人站一排

首先统计奇数和偶数的编号的个数

分为三种情况:

1.如果奇数的个数(x)和偶数的个数(y)相同,那么结果就是偶数的个数*2

2.如果奇数的个数小于偶数的个数,那么结果就是偶数的个数*2 + 1(加一是把最后剩下的偶数放在同一组)

3.如果奇数的个数大于偶数的个数,首先可以确定组数sum = 偶数的个数*2

        因为最后是剩下奇数,而两个奇数又可以组成一个偶数,那么剩下的奇数就以3为一组

        则sum += (x - y)/3 * 2

        最后可能剩下0,1,2个奇数

        如果剩下2个,刚好可以组成偶数,而排列是以偶奇排列,所以 sum++

        如果剩下1个,并不能排列在后面,要与前面的两组组成偶数,所以sum--

上代码
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#include <stack>
 
using namespace std;
 
typedef long long ll;
const int N = 1e3 + 10;
 
int n, x, y, ans;
 
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int m;
        cin >> m;
        if (m % 2 != 0)
            x++;
        else
            y++;
    }
 
    if (y == x)
    {
        ans = y * 2;
    }
    else if (y > x)
    {
        ans = x * 2 + 1;
    }
    else if (y < x)
    {
        ans = y * 2;
        x -= y;
        ans += (x / 3) * 2;
        if (x % 3 == 2)
            ans++;
        else if (x % 3 == 1)
            ans--;
    }
 
    cout << ans << endl;
    return 0;
}

标签:OJ,2462,奇数,++,个数,偶数,ans,HNUCM,include
From: https://blog.csdn.net/m0_74536237/article/details/139708093

相关文章

  • PO/DO/VO/DTO/BO/POJO概念与区别
    一、PO/DO/VO/DTO/BO/POJO的介绍PO(PersistentObject)=DO(DataObject)持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。通过DAO层向上传输数据源对象。VO(ViewO......
  • 2024 姿态估计/动作捕捉 开源项目 pose estimate / mocap opensource projects
    困境遮挡抖动脚与地面单目AiOS:All-in-One-StageExpressiveHumanPoseandShapeEstimation,解决了遮挡问题PhysPT:Physics-awarePretrainedTransformerforEstimatingHumanDynamics:引入物理模型HaMeR:手部捕捉TRAM:超越WHAM,可以实现高难度动作WHAC:首个......
  • 【ZZULIOJ】1105: 判断友好数对(函数专题)
    题目描述输入两个正整数m和n,顺序输出m到n之间的所有友好数对。如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对,因为1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=12101210的因子之和为1+2+5+10+11+22+55+110+121+2......
  • [lnsyoj98/luoguP1403]约数研究
    题意原题链接求\(1\simn\)的约数个数和sol直接算很困难,考虑换一个角度求\(1\simn\)的约数个数和,等价于求\(1\simn\)分别是范围内几个数的约数对于第\(i\)个值,在\(1\simn\)中,存在\(i,2\cdoti,3\cdoti,\cdots,k\cdoti\),共\(\lfloor\frac{n}{i}\rfloor\)因此,最终......
  • [lnsyoj118/luoguP3369]普通平衡树
    题意维护一个数据结构,要求支持插入,删除,根据排名查数,根据数查排名,查询前驱,查询后继\(6\)个操作sol考虑到后四个查询的操作,会发现使用二叉搜索树(BST)完全可以实现为了完成这四个操作,需要在每个节点记录\(3\)个值:\(key\)表示当前节点的数\(cnt\)表示当前节点的数的个数(为了......
  • This version of the Android Support plugin for IntelliJ IDEA or Android Studio c
    解决低版本的android导入高版本的工程7.2修改适配android4.2.11、setting.gradle保留rootProject.name=""和include‘:app’,其余注释//pluginManagement{//repositories{//gradlePluginPortal()//google()//mavenCentral()//}//......
  • zzulioj1042答案c语言
    ​(方法一:使用函数体)#include<stdio.h>#include<math.h>intt;//t输入这里的t是一个全局变量doubleturn(doublem,doublen,doublea,doublesum,doubleflag);intmain(){doublem,n,a,sum=0,flag=1;//m分子,n分母,a项数,sum和,flag变换符号scanf("%d",......
  • Highcharts to Figma Design Projects
    HighchartstoFigmaDesignProjectsThenewHighchartsCoreFigmaPluginsimplifiesintegratinginteractivedatavisualizationsintoFigmadesignworkflows.HighchartsCorebyHighsoftisapowerfulJavaScriptchartinglibrarythatsimplifies......
  • Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(2)
    我们继续分析Chromium的Mojo模块。DispatcherDispatcher是MojoIPC系统中的一个关键概念。它是一个虚基类类(或接口),用于实现与特定MojoHandle相关联的Mojo核心API调用。在Mojo系统中,应用程序通过这些API与各种类型的IPC机制进行交互,如消息管道、共享缓冲区......
  • dlib安装问题:ERROR: Could not build wheels for dlib, which is required to install
      #问题安装报错。 >pipinstalldlibDefaultingtouserinstallationbecausenormalsite-packagesisnotwriteableCollectingdlibDownloadingdlib-19.24.4.tar.gz(3.3MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━......