首页 > 其他分享 >贪心经典例题:均分纸牌

贪心经典例题:均分纸牌

时间:2024-07-01 11:55:38浏览次数:24  
标签:遍历 平均值 纸牌 int E5% rsv 例题 贪心

希望粉丝破50.

 


贪心实际上就是把眼前的利益最大化,如果你要做出这道题你一定要找出贪心原则。贪心原则icon-default.png?t=N7T8https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%B4%AA%E5%BF%83%E5%8E%9F%E5%88%99&fenlei=256&rsv_pq=0xb087efe300ab5a2d&rsv_t=78216%2BhRdA9KWJwdWrjKzhFc583oDUWi8CjHzsenZg4n84tbj%2BNU%2FsLE%2BMb%2F&rqlang=en&rsv_dl=tb&rsv_enter=1&rsv_sug3=13&rsv_sug1=13&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=4622&rsv_sug4=4622

我们在遍历上面这些数的时候,可以算出这些数的和从而算出平均值 。每个数只能有三种情况,第一种:大于平均值;第二种:小于平均值;第三种:等于平均值。我们将每一个数都变成平均值,那么最后一个数也必定是平均值。所以,我们可以这样:只要不是第三种情况,我们就可以吧超出或不够的部分用我们下一个要遍历的数拿、放。

贪心原则:从左往右

如果大于平均值就把大于平均值的部分向右移;

如果小于平均值就从右边那个数移去小于平均值的部分;

如果等于平均值就跳过,不累加;

最后如果遍历完了就输出累加器的数值。

有了这个,写代码就很简单了。

#include<bits/stdc++.h>
using namespace std;
int a[101]={};
int main()
{
	int n;
	cin>>n;
	int s=0;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		s+=a[i];
	}
	int p=s/n;
	int step=0;
	for(int i=0;i<n;i++)
	{
		if(a[i]<p)
		{
			a[i+1]-=p-a[i];
			a[i]=p;
			step++;
		}
		if(a[i]>p)
		{
			a[i+1]+=a[i]-p;
			a[i]=p;
			step++;
		}
	}
	cout<<step;
	return 0;
}

欢迎评论,点个赞吧。

标签:遍历,平均值,纸牌,int,E5%,rsv,例题,贪心
From: https://blog.csdn.net/m0_72444271/article/details/140096659

相关文章

  • 贪心推公式——AcWing 125. 耍杂技的牛
    贪心推公式定义贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,希望通过局部的最优选择来得到全局最优解的算法策略。运用情况问题具有最优子结构,即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优。问题的选择策略相对明确且易......
  • 有理函数的不定积分例题
    example00.First\[\begin{aligned}\int\frac{1}{\sinx+\cosx}dx=?\\\\设:u=\tan\frac{x}{2},\enspacex=2\arctan(u)\\\\\sinx=\frac{2u}{1+u^{2}},\enspace\cosx=\frac{1-u^{2}}{1+u^{2}}\\\\\int\frac{1}{\frac{2u}{1......
  • LeetCode 2542. 最大子序列的分数(贪心、小顶堆)
    2542.最大子序列的分数思路:先对nums2按降序排列,然后遍历nums2的最小值,同时在区间[0,i]中选中k个最大的nums1即可。然后找出最大的ansclassSolution{public:typedefpair<int,int>PII;longlongmaxScore(vector<int>&nums1,vector<int>&nums2,intk)......
  • (nice!!!)LeetCode LCP 20. 快速公交(记忆化搜索+小顶堆+贪心)
    LCP20.快速公交思路:逆向记忆化搜索。思考从target到0所花的最小时间。通过哈希表来进行记忆化搜索,避免重复遍历。细节看注释classSolution{public:typedeflonglongLL;typedefpair<LL,LL>PII;constintmod=1e9+7;intbusRapidTransit(int......
  • 蓝桥杯课程-贪心算法讲解
    1.区间调度问题问题描述在有限的区间范围内,选择完成最多的任务组合解决策略我们可以思考的策略有:1.最早开始时间(begin)2.最早结束时间(end)3.用时最少(end-begin)1.我们这里首先定方向:从区间最左端向右开始选择。2.我们很容易想到的策略是选择用时最少的情况,但是试想如果......
  • 小于n的最大数 - 贪心算法及证明 - 附python实现
    一、问题描述?    给定一个整数n,并从1~9中给定若干个可以使用的数字,根据上述两个条件,得到每一位都为给定可使用数字的、最大的小于整数n的数。    例如,给定可以使用的数字为{2,3,8}三个数:    给定n=3589,输出3388;给定n=8234,输出8233;…… 二、解......
  • C语言例题,五子棋在判断胜负,下棋落子上的算法参考,以及基于easyx的实现源码
    赘述首先我们需要在外部定义一个(n+4)*(n+4)且全为0的二维数组(为什么要加4见判断胜负部分)         以及鼠标消息变量mouse        (设成0只是为了判断是否是未落子区域),其中n为我们所绘制棋盘各行/列单位元个数+1如在800*800的棋盘中我们的n就是9当我们将......
  • 【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【贪心/脑筋急转弯】2
    有LeetCode算法/华为OD考试扣扣交流群可加948025485可上全网独家的欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明示例三......
  • (nice!!!)LeetCode 2813. 子序列最大优雅度(反悔贪心)
    2813.子序列最大优雅度思路:1.先对数组items按profit进行降序排序。2.把前k个最大的profit选中3.再遍历剩余的项目,看看能不能增加类别的数量。因为profit是递减的,所以只有类别的数量能增大的情况下,才考虑从选中的k个项目当中删掉重复的类别项目里面的最小profit。细节......
  • 反悔贪心学习笔记
    算法:反悔贪心,顾名思义就是贪心的时候反悔。意思是:如果这一步的贪心不是全局最优解,就退回去一步,换一种贪心策略。一般分为反悔自动机和反悔堆。反悔自动机基本的思路是:每次选择直观上最接近全局最优解的贪心策略,若发现最优解不对,就想办法自动支持反悔策略。反悔堆则......