Power Sequence

题意:一个数字序列,可以随意排列,可进行如下操作:将一个数加一或减一,问至少需要多少次操作使得arr[i]=ci(i从0开始)

首先要将数列从小到大排列,因为ci是递增的.当个数小于等于二时,arr[0]变为1是固定的,如果有arr[1],那么令c为arr[1]即可,所以此时的答案为arr[0]-1。当n大于二时,我做题的时候考虑的是答案是否在arr[n-1](1/n)附近,因为当次幂越大,偏差的值也会越大,当如果只有arr[n-1]近,但其他数都离xi比较远时显然此方案错误,思来想去只能想到暴力,但我又考虑怎么确定答案的范围呢,小于arr[n-1]显然是不现实的,发现当从小到大遍历时,遍历的值越接近答案,那么需要操作的次数一定会减小,所以遍历的终止条件是需要的操作次数大于上一遍历值下的操作次数。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<cmath>

using namespace std;

typedef long long ll;

const int N = 1e5 + 100;

ll arr[N];

ll sum = 0;
ll ans = 1e18;

int main() {
	ll n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	sort(arr + 1, arr + 1 + n);
	if (n <= 2) {
		cout << arr[1] - 1 << endl;
		return 0;
	}
	for (ll i = 1; i < 1e9 + 10; i++) {
		ll temp = 1;
		ll t_ans = arr[1] - 1ll; 
		bool sign = false;
		for (ll j = 2; j <= n; j++) {
			temp = temp * i;
			t_ans = t_ans + abs(arr[j]-temp);
			if (t_ans > ans) {//注意要及时推出,否则可能会溢出
				sign = true;
				break;
			}
		}
		if (sign) break;
		ans = min(ans, t_ans);
	}
	cout << ans << endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 Cube是STMicroelectronics(ST)提供的一款嵌入式软件开发平台,用于开发基于STM32微控制器的应用程序。Power Sequence是指在STM32微控制器上电时各种电源信号的启动和关闭顺序。 在设计STM32微控制器的电路板时,需要遵循一定的电源引脚的连接规则,以确保电源信号的正确启动和关闭。Power Sequence是这些电源引脚的启动和关闭顺序。 通常情况下,Power Sequence涉及到的电源信号可以分为几种类型:供电电源、复位信号和引脚电源。供电电源包括VDD、VDDA和VDDCORE等,在上电时必须先启动。复位信号包括NRST和PORRST等,用于重置整个系统。引脚电源通常是外部器件的供电引脚,它们的启动和关闭与供电电源的启动和关闭有关。 在STM32微控制器引脚上电之前,必须先启动供电电源,并确保它们的电压稳定,以避免电源噪声对系统的影响。然后,根据设计要求,可以启动复位信号和引脚电源。在关闭时,应按相反的顺序关闭这些信号,以确保系统正常停机。 通过STM32 Cube,开发人员可以灵活配置Power Sequence,以满足不同应用的需求。使用CubeMX工具,开发人员可以通过简单的图形界面进行配置,选择所需的引脚和电源信号,然后自动生成相应的初始化代码。这大大简化了对Power Sequence的配置工作,提高了开发效率。 综上所述,STM32 Cube Power Sequence是STM32微控制器上电时各种电源信号的启动和关闭顺序。通过STM32 Cube开发平台,我们可以方便地配置Power Sequence,并生成相应的初始化代码,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值