Codeforces Round 961 【C. Squaring】

C. Squaring

题目大意:

给你一个长度为n的数组,求最少次操作,使得数组(非严格)递增。一次操作:Ai 变为 Ai^2。

不可能实现输出-1。

关键思路:

分子分母同时取对数,比值不变。

代码:

cpp 复制代码
void solve()
{
	ans=0;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>b[i],
		a[i]=0;
	
	for(int i=2;i<=n;i++)
	{
		if(a[i-1]==0&&b[i-1]<=b[i])//没有操作过,可以原数组比较
		{
			continue;
		}
		
		if(b[i]==1)//前面肯定有比1大的数
		{
			cout<<"-1\n";
			return;
		}
		
		ll x=a[i-1];
		double A=log(1.0*b[i-1])/log(1.0*b[i]);
		ll y=ceil(x+log2(A));
		
		a[i]=max(0ll,y);  //不可以把数变小,所以不操作
		ans+=a[i];
	}
	
	cout<<ans<<"\n";
/*

		ll x=a[i-1];
		long double A=logl((long double)b[i-1])/logl((long double)b[i]);
		ll y=ceill(x+log2l(A));
		
		a[i]=max(0ll,y);  //不可以把数变小,所以不操作
		ans+=a[i];
}
*/

明年再学md或者latex,看情况。

纯纯不务正业,为了省时间思路就这样。

相关推荐
JieE2121 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2122 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack203 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树3 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE2123 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2123 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术3 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦4 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
clint4564 天前
C++进阶(1)——前景提要
c++