l5213. 玩筹码
这道题本应该很简单的但是我把他复杂化了,所以没有在第一时间里A出来。我们来看看题目

看上去是不是很复杂,思路是有,但是,很难实现。我最开始的时候是认为有三种情况,左边筹码最多,右边筹码最多,中间筹码最多。写了三组 for 循环。只过了70%的样例。这时候,我就意识到,我肯定想多了!当我重新思考这道问题的时候,我发现其实就只有两种情况:
1、奇数点的筹码移动到偶数上,移动奇数次。
2、偶数点的筹码移动到奇数上,移动偶数次。
为什么成立呢?因为我们规定了数轴为整数。所以我们选择的最终目的地不是奇数就是偶数。而且:
设a属于奇数序列,那么必有 ai + 2*n = ai+n
同样的,
若b属于偶数序列,那么必有 bi + 2*n = bi+n
这样很明显的就可以看出,移动次数只和奇、偶数相关。而且无论如何移动我最少移动次数也应该是奇或偶数的个数。所以统计一下奇数偶数的个数即可得出答案。
这道题比较简单,先自己写,再看代码。
/**
* @brief 玩筹码
* @note 偷懒用了三目
* @param *chips: 数组
* @param chipsSize: 数组大小
* @author 杨文蓁的小迷弟
*/
int minCostToMoveChips(int *chips, int chipsSize)
{
int Odd = , Even = ; for (int i = ; i < chipsSize; i++)
{
if (chips[i] & )
{
Odd++;
}
else
{
Even++;
}
} return Odd > Even ? Even : Odd;
}
周赛不易,诸君共勉!
l5213. 玩筹码的更多相关文章
- LeetCode1217 玩筹码(贪心)
题目: 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 ...
- Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)
leetcode真的是一个学习阅读理解的好地方 860. 柠檬水找零 """ 因为用户支付的只会有5.10.20 对于10元的用户必须找一个5 对于20元的用户可以找(三 ...
- leetcode 0211
目录 ✅ 1217. 玩筹码 描述 解答 c java py ✅ 206. 反转链表 描述 解答 c java py ✅ 922. 按奇偶排序数组 II 描述 解答 c 双指针soldier tddo ...
- 一良心操盘手:我们是这样玩死散户的! z
做庄必须考虑很多问题: 第一是证监会的监控.操控股票不能让他们抓住把柄,这时候就要考虑多户头,或者拉几个私募大户集体作战. 第二要考虑产业资本的问题.如果我们拉的时候,他们看到利润可观,结果大量抛出筹 ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法
1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下 ...
- [C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数
了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数 目录 简介 特点 方法的参数 方法的返回值 与批处理交互的一个示例 简介 我们知道,新建一个控制台应用程序的时候,IDE 会同时创建 ...
- 玩转spring boot——开篇
很久没写博客了,而这一转眼就是7年.这段时间并不是我没学习东西,而是园友们的技术提高的非常快,这反而让我不知道该写些什么.我做程序已经有十几年之久了,可以说是彻彻底底的“程序老炮”,至于技术怎么样?我 ...
- 玩转spring boot——结合redis
一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...
随机推荐
- 六、linux基础-计算机网络_线程_进程
6 计算机网络-线程和进程6.1 TCP/IP协议 TCP/IP是Unix/Linux世界的网络基础,在某种意义上,Unix网络就是Tcp/ip,而且Tcp/ip就是网络互连的标准他不是一个独立的协议 ...
- Java如何实现序列化,有什么意义?
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States, 但是Java给你提供一种应该 ...
- css怎样让元素显示指定的宽高比
.father { width: 100% } .child {; padding-bottom: 20%; background: green; overflow: hidden; } <bo ...
- 手搓SSM
相关资料,网上的资料很多,但是文章看不懂,看别人写好的代码比较好理解 ssm-example mysssm 整个流程和原理 一个入口类,入口类需要在tomcat启动的时候执行 通过扫描文件加把文件取出 ...
- UniGui学习之部署(06)只 有Loading...,
procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject);begin Self.ExtRoot:='ext-6. ...
- 本机连接虚拟机中docker启动的mysql数据库
首先要保证本机能访问虚拟机的网络 并且虚拟机开通了mysql的访问端口 进入容器 docker exec -it 容器id /bin/bash 进入mysql数据库开启远程访问权限 mysql -ur ...
- [Linux] day03——REHL部署
REHL 部署 Linux 树形目录结构 最顶层 根 / 在Linux中 一切皆文件 文件系统 swap / 安装方式 PXE U盘 光盘 配置安装程序 选择包 5.9 6.4
- PowerHandle管理页面
HljioGBjiomGiiuHJKYiubfcgydftyjkKHKHIUvghcghftyfhkHJKGHJKguyjljklhJKGUYGUYhjklhfgtydtyGHJgHJUGuy HKk ...
- idea增删改查
idea应用mybatis写增删改查 entity层 private Integer id;private String userCode;private String userName;privat ...
- C语言入门第四章
=========C语言的输入与输出=========== %-9d : d:以十进制输出,9表示至少占用9个字符的宽度,宽度不足以空格补齐,-表示左对齐.综合起来,%-9d 表示以十进制输出,左对齐 ...