贪心27pts求调
查看原帖
贪心27pts求调
758768
cy_AK_CSP_ing楼主2025/6/30 12:18
#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	long long T,x,y,k,t,m,ans,ans1;
	long long a[32];
	long long p[32];
	p[0]=1;
	for(int i=1;i<32;i++)
	{
		p[i]=p[i-1]*2;
	}
	cin>>T;
	while(T--)
	{
		memset(a,0x7f,sizeof a);
		ans=0;
		cin>>x>>y>>k;
		for(int i=0;i<=k;i++)
		{
			cin>>a[i];
		}
		for(int i=1;i<32;i++)
		{
			a[i]=min(a[i],a[i-1]*2);
		}
		x=abs(x-y);
		t=x;
		m=k;
		for(int i=31;i>=0;i--)
		{
			while(x>=p[i])
			{
				x-=p[i];
				ans+=a[i];
			}
		}
		for(int i=31;i>=0;i--)
		{
			if(t>p[i])
			{
				m=i;
				break;
			}
		}
		ans1=a[m+1];
		t=p[m+1]-t;
		for(int i=31;i>=0;i--)
		{
			while(t>=p[i])
			{
				t-=p[i];
				ans1+=a[i];
			}
		}
		cout<<min(ans,ans1)<<"\n";
	}
	return 0;
}

能过样例,评测结果

2025/6/30 12:18
加载中...