Cow and Friend(贪心)

传送门

由于要求最小步骤,那么考虑贪心策略可以发现采用最大的那个数字是最优的。

  1. 当距离等于最大数字时,那么答案为1
  2. 当距离大于最大数字时,那么可以先将前面的一大部分填上,最后一次肯定会“溢出”,那么只需要将倒数第二次和倒数第一次构成一个等腰三角形即可,这样就能保证是最少次数。
#include <iostream>
#include <map>
#include <cmath>
#include <algorithm>
using namespace std;

const int N = 100010;
typedef long long ll;
ll a[N];
map<int, int> mp;
int main(){
	int t;
	cin >> t;
	while(t --){
		mp.clear();
		int n, x;
		cin >> n >> x;
		for(int i = 0; i < n; i ++){
			cin >> a[i];
			mp[a[i]] = 1;
		}
		sort(a, a + n);
		if(mp[x] == 1)
			cout << 1 << endl;
		else
			cout << max((ll)2, (x + a[n - 1] - 1) / a[n - 1]) << endl;
	}
	
	return 0;
}

几天不写cf,啥都不会了

原文地址:https://www.cnblogs.com/pureayu/p/14478482.html