NC21545 牛牛的遊戲(貪心)

2022-05-28 16:33:10 字數 489 閱讀 1342

首先發掘題目性質,題目要求,每個點,要不往左要不往右跳x

因此我們可能先想到排序,之後初始化答案為a[n]-a[1]

那麼接下來考慮使用貪心的想法,首先,在接下來的情況左邊界肯定不會往左挑,有邊界肯定不會往右跳

而且我們要使左邊界盡可能大,右邊界盡可能小。所以列舉每個點的跳躍情況時,就找一下左右邊界最近能到什麼地方

左邊界肯定是a[1]+x和a[i+1]-x的最小值,這裡取最小的意思是最大的最小值。右邊取a[n]-x和a[i]+x的最大值

之後更新答案即可

#include#include

using

namespace

std;

typedef

long

long

ll;const

int n=1e5+10

;ll a[n];

intmain()

cout

}

view code

牛牛的遊戲

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 ...