POJ 3069 很水的貪心

2021-09-19 20:45:22 字數 729 閱讀 4436

白書上很水很水的貪心,軍訓太久沒做題,看了老半天想不出選取的貪心策略。。。

#include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const int maxn=100010;

const int inf=0x3f3f3f3f;

int x[maxn];

int r,n;

int main()

sort(x,x+n);

x[n]=inf;//最後乙個點之後的點不存在,防止超出陣列

int ans=0;

int i=0;

while(ix[i]+r)

pos++;

}while(x[i]<=x[pos]+r) i++; //標記之後找x[i]+r以外的第乙個點

} cout《我開始想複雜了,以為是整成區間貪心,然後根據某種策略,選相交最多的部分。

結果看題解,只是從左開始選,每步選最優,也就是最水的貪心。。。

例如對最左的點,在他r範圍以內選取乙個點標記,顯然,如果存在標記第i個點用來覆蓋他,那麼從1~i-1之間的點必然可以被這個標記點覆蓋,那麼如果範圍內存在i+1個點,顯然可以覆蓋i能覆蓋的點,並且右側可以到達更遠的地方,明顯更優。

故選擇r範圍內離得最遠的點。

題解 poj2054 複雜的貪心

題目鏈結 大佬部落格的講解非常詳細,學習了 詳細思路見上方部落格或者李煜東 演算法競賽高階指南 include include include using namespace std define rep i,a,b for int i a i b i define for i,a,b for in...

POJ 2054 有難度的貪心

poj 2054 題意 給你一棵樹 然後給你根節點 其他節點染色的條件是父節點一定要被染色 我們知道如果父節點不需要被染色 那麼很簡單 貪心就好了 但是如果父親節點需要染色 我們利用前面的性質 大點值一定是跟在父節點後面的 所以我們考慮 x y是一起的 那麼 x y z 和z x y 分別是 x 2...

POJ 2376 簡單的區間貪心問題

簡單翻譯 給你乙個長度為t的時間區間,區間從1開始,每乙個時間點都需要有奶牛在工作,有n頭奶牛,給你每個奶牛的工作區間,讓你從這些奶牛中選一些奶牛,讓其覆蓋t這個時間區間,有兩個條件 1.每個時間點都需要有奶牛工作 2.盡可能少的使用奶牛 分析 我們可以位元組把題目中給定的條件就想象成乙個乙個的區間...