首先發掘題目性質,題目要求,每個點,要不往左要不往右跳x
因此我們可能先想到排序,之後初始化答案為a[n]-a[1]
那麼接下來考慮使用貪心的想法,首先,在接下來的情況左邊界肯定不會往左挑,有邊界肯定不會往右跳
而且我們要使左邊界盡可能大,右邊界盡可能小。所以列舉每個點的跳躍情況時,就找一下左右邊界最近能到什麼地方
左邊界肯定是a[1]+x和a[i+1]-x的最小值,這裡取最小的意思是最大的最小值。右邊取a[n]-x和a[i]+x的最大值
之後更新答案即可
#include#includeview codeusing
namespace
std;
typedef
long
long
ll;const
int n=1e5+10
;ll a[n];
intmain()
cout
}
牛牛的遊戲
1.a的最後乙個字母和b的第乙個字母相同 2.b的最後乙個字母和c的第乙個字母相同。現在牛牛給出了3個字串a,b,c,希望你能判斷這3個字串能否構成乙個 字串鏈 若能則輸出 yes 否則輸出 no 輸入描述 一行,3個字串,每兩個字串之間用乙個空格分隔。1.a,b,c均由小寫的英文本母組成 2.1 ...
貪心 牛牛的排序
牛牛剛學完排序,他準備拿n個數一展身手,但是他發現現實中的排序與課堂裡的排序不一樣。每次他只能對連續的n 1個數進行從小到大的排序。請問牛牛最少需要幾次排序能將所有的數排成有序的。第一行先輸入乙個整數n 3 50 第二行輸入n個整數範圍在1到1000以內。輸出乙個整數。42 6 8 5 64 3 1...
貪心演算法 瘋狂的牛牛
瘋狂的牛牛 n個隔間 c頭牛 使每兩頭牛之間的最小距離最大化 思路 轉化為判定性問題 判斷間距d是否可行 對間距d採取二分策略 include include using namespace std const int maxn 1e5 10 int arr maxn bool judge int ...