首页 > 其他分享 >LOJ10010 糖果传递

LOJ10010 糖果传递

时间:2023-07-10 22:23:11浏览次数:42  
标签:方程 int ll 传递 LOJ10010 糖果

经典问题,环形均分纸牌
设每个人的糖果数量为\(a[1]\)~\(a[n]\)
设\(b[i]\)表示第\(i\)个人传递给第\(i+1\)个人的糖果数量(正负有意义),其中\(b[n]\)表示第\(n\)个人传递给第\(1\)个人的糖果数量
根据题意不难列出\(n\)个方程,看似\(n\)个未知数,只有唯一解,但其实只有\(n-1\)个方程,因为最后一个方程是由前\(n-1\)个方程推导得出的,所以有一个自由元,不妨认为\(b[1]\)是自由元
题目所求即\(min(\sum_{1} ^ {n} {|b[i]|})\)
由于\(b[1]\)是自由元,即转化为货仓选址
code:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n;
ll a,num;
ll sum[1000010],b[1000010];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a);
		sum[i]=sum[i-1]+a;
	}
	num=sum[n]/n;
	for(int i=1;i<=n;i++)
	{
		b[i]=(ll)(i-1)*num-sum[i-1];
	}
	sort(b+1,b+n+1);
	ll temp=b[n>>1],ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=abs(b[i]-temp);
	}
	printf("%lld",ans);
    return 0;
}

标签:方程,int,ll,传递,LOJ10010,糖果
From: https://www.cnblogs.com/dingxingdi/p/17542517.html

相关文章

  • Vue路由新开页面跳转和传参传递
    需求:在后台管理系统首页列表项中,点击详情跳转到系统中指定菜单的路由要求新开窗口并需要带上参数查询。第一种方法:1const{id}=item;2letrouteUrl=this.$router.resolve({3path:'/xxx',//路由地址4query:{id}//参数信息5});6window.open(ro......
  • 哈希传递
    哈希传递简介PassTheHash即PTH,就是通过传递Windwos本地账户或者域用户的hash值,达到控制其他服务器的目的在进入企业内网之后,如果是WindowsPC或者服务器较多的环境,极有可能会使用到hash传递来进行内网的横传,现在企业内部一般对于口令强度均有一定的要求,抓取到本地hash后可......
  • 在 Go gRPC 中传递额外参数
    GogRPC是一个高性能、开源的RPC框架,它支持通过ProtocolBuffers进行序列化和反序列化,提供了简单易用的API,并且可以跨语言通信。在实际开发中,我们有时需要在gRPC方法之间传递一些额外的参数,例如请求头信息、跟踪ID、取消信号等。本文将介绍在GogRPC中如何传递这些额外......
  • 6537: candy买糖果 桶排序
    描述  candy非常喜欢吃糖果,于是他就攒下平时妈妈发的零花钱,准备放学后去偷偷买糖。现在candy知道自己的存钱罐里一共有n张纸币,每张纸币的面值为Vi。这几天放学后,他想要用这些钱买m种糖果,并且希望能用一种面值的纸币恰好买到所有的糖果。  输入  第一行包含两个......
  • SpringBoot集成kafka收发消息——传递消息为对象
    目前springboot整合后的kafka,因为序列化器是StringSerializer,这个时候如果需要传递对象可以有两种方式方式一:可以自定义序列化器,对象类型众多,这种方式通用性不强。方式二:可以把要传递的对象进行转json字符串,接收消息后再转为对象即可,本项目采用这种方式JSON.toJSONString(user)......
  • get方法传递参数的方式
    GET方法是一种HTTP请求方法,用于从指定的资源请求数据当使用GET方法传递参数时,参数会编码为URL的一部分,通常是在问号(?)后面,参数之间使用和号(&)分隔。下面是一个示例URL,展示https://gptgo.ai/search?q=your_query_here¶m1=value1¶m2=value2上面是常用的方式传递参数,同时也可以......
  • [代码]如何在ASP.NET网页间传递数据
    重点总结目前为止在ASP.NET网页中传递数据的方式至少有5种:1、通过查询字符串传递数据。2、通过HTTPPOST传递数据。3、通过会话状态传递数据。4、通过源页的公共属性传递数据。5、通过源页中的控件值传递数据。到底使用哪种方式来进行数据的传递,这可能受到两方面的影响:1、页面重定......
  • [代码]如何在ASP.NET网页间传递数据
    重点总结目前为止在ASP.NET网页中传递数据的方式至少有5种:1、通过查询字符串传递数据。2、通过HTTPPOST传递数据。3、通过会话状态传递数据。4、通过源页的公共属性传递数据。5、通过源页中的控件值传递数据。到底使用哪种方式来进行数据的传递,这可能受到两方面的影响:1、页面重定......
  • js 使用get 接口如何传递 特殊字符给后端,类似 # 等特殊字符
    今天开发遇到个问题。用户输入了#怎么把文本完整的传递给后端如果直接传输就会出现#之后的东西全都没有,解决方法如下:1,使用其他特殊字符代替,使用replaceAll  //使用replaceAll替换所有#,然后后端再替换回来letnewStr=newQue.replaceAll('#','&')缺点,会......
  • TornadoFx 页面之间的数据传递
    原文地址:TornadoFx页面之间的数据传递-Stars-One的杂货小窝和Android开发一样,经常遇到两个页面之间需要进行数据的交互传输,本文讲解下TornadoFx框架中,页面之间的数据传递步骤方法方法1-使用构造方法首先,我们知道TornadoFx中,页面可以是View或Fragment,然后View或F......