贪心过样例但0pts,求条
查看原帖
贪心过样例但0pts,求条
1578710
FZCmavic3pro楼主2025/6/30 09:21
#include <bits/stdc++.h>
using namespace std;
const int N = 31;
int t;
int x, y, k;
int a[32];
int main(){
	cin >> t;
	while(t --){
		cin >> x >> y >> k;
		for(int j = 0;j <= k;j ++){						
			cin >> a[j];
			if(j > 0){
				a[j] = min(a[j], 2 * a[j - 1]);
			}			
		}
		int c = abs(x - y);
		long long sum = 0;
		for(int j = k;j >= 0;j --){
			long long p = 1LL << j;
			if(y < x + p){
				if(c >= x + p - y){
					x += p;
					int o = x - y;
					long long r = o / p;
					sum += r * a[j];
					c -= r;
				}
								
			}
			else{
				long long cnt = c / p;
				sum += cnt*a[j];
				c %= p;
			}			
			if(c == 0){
				break;
			}
		}
		cout << sum << endl;
	}
	return 0;
}

2025/6/30 09:21
加载中...