P1852 [国家集训队]跳跳棋(LCA+二分)

本文详细介绍了如何运用最低公共祖先(LCA)和二分搜索技术解决P1852国家集训队的跳跳棋问题。通过对题目的深入分析,阐述了算法思路及实现过程,帮助读者理解这两种算法在实际问题中的应用。
摘要由CSDN通过智能技术生成

题目链接

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
struct node
{
	int x,y,z;
	bool operator==(const node &a)const
	{
		return x==a.x&&y==a.y&&z==a.z;
	}
}a,b;
int depth;
node find(node a,int res)
{
	depth=0;
	while(res)
	{
		int c=a.y-a.x,v=a.z-a.y;
		if(c==v) return a;
		if(c>v)
		{
			int k=(c-1)/v;
			k=min(k,res);
			a.y=a.y-k*v;
			a.z=a.y+v;
			depth+=k;
			res-=k;
		}
		if(v>c)
		{
			int k=(v-1)/c;
			k=min(k,res);
			a.y=a.y+k*c;
			a.x=a.y-c;
			depth+=k;
			res-=k;
		}
	}
	return a;
}
int main()
{
	scanf("%d%d%d%d%d%d",&a.x,&a.y,&a.z,&b.x,&b.y,&b.z);
	if(a.x>a.y) swap(a.x,a.y);
	if(a.x>a.z) swap(a.x,a.z);
	if(a.y>a.z) swap(a.y,a.z);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值