当前位置: 首页 > article >正文

牛客周赛 Round 79 C-小红的小球染色

C-小红的小球染色

链接:https://ac.nowcoder.com/acm/contest/100902/B
来源:牛客网

题目描述

本题与《F.小红的小球染色期望》共享题目背景,但是所求内容与范围均不同,我们建议您重新阅读题面。

有 n 个白色小球排成一排。小红每次将随机选择两个相邻的白色小球,将它们染成红色。小红将持续这个操作直到无法操作,请你计算小红操作次数可能的最小值和最大值。

输入描述:

在一行上输入一个正整数 n(1≦n≦1e9) 代表小球数量。

输出描述:

在一行上输出两个正整数,代表小红操作次数可能的最小值和最大值。

示例1

输入

3

输出

1 1

说明

在这个样例中,第一次选取,一共有两种不同的选取情况:
选中第一、二个球;
选中第二、三个球。
不管是哪一种选法,染完颜色后均无法继续操作。所以小红能且仅能操作一次,操作次数最小值为 1,最大值也为 1。

示例2

输入

4

输出

1 2

说明

在这个样例中,第一次选取,一共有三种不同的选取情况:
选中第一、二个球;
选中第二、三个球;
选中第三、四个球。
其中,第二种选取方式染色后无法继续操作;而第一、三种选取方式染色后还可以进行一次染色。

思路: 

最小的情况:每 2 个红球之间有 1 个白球分隔,两端也尽量有 1 个白球。我们可以分成3个一组,每组第一个是白球,然后2个红球,可知当n%3==2 时,最后还有2个球,必须染色。

最大的情况:直接挨个染色,n//2即可。

代码:

n = int(input())
mi = 0
ma = 0
ma = n//2
if n>=4:
    mi = n//3 + (n%3 == 2)
else :
    mi = n//2
print(f"{mi} {ma}") 
# 每 2 个红球之间有 1 个白球分隔,两端也尽量有 1 个白球。
# 1 2 3 4 5 6 7 8


http://www.kler.cn/a/540693.html

相关文章:

  • 仿 RabbitMQ 实现的简易消息队列
  • 数据结构与算法(test3)
  • Visual Studio 2022 中使用 Google Test
  • C++ 设计模式 - 访问者模式
  • CSS 相关知识
  • IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决
  • 网络安全应急响应总结阶段 网络安全应急工作
  • Winform开发框架(蝇量级) MiniFramework V2.1
  • mysql8.0使用PXC实现高可用
  • Include多表查询
  • ECG分析0210
  • 软件工程-软件需求规格说明(SRS)
  • 实战设计模式之责任链模式
  • 使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理
  • php 实现 deepSeek聊天对话
  • MacOS安装Milvus向量数据库
  • 【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)
  • 蓝桥杯算法日记|贪心、双指针
  • 石英表与机械表的世纪之争(Quartz vs. Mechanical Watches):瑞士钟表业的危机与重生(中英双语)
  • 如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
  • 目标检测数据集合集(持续更新中)
  • centos docker安装
  • 【C#零基础从入门到精通】(八)——C#String字符串详解
  • 【华为OD-E卷 - 120 分割数组的最大差值 100分(python、java、c++、js、c)】
  • ABP框架9——自定义拦截器的实现与使用
  • 如何使用Socket编程在Python中实现实时聊天应用