トピックへのリンク:http://acm.hdu.edu.cn/showproblem.php?pid=2491
それは期間牧師のポイントになるにバインドされた時間内にすべての可能な時間の存在であるため、各セグメントの中点を見つけることが貪欲
そして、ソートを押してください
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 構造体ノード { INT S、T、Z、D。 } [ 100005 ]。 int型のn; BOOL CMP(ノードX、ノードY) { 戻り XZ < YZ。 } int型のmain() { int型I、J。 一方、(scanf関数(" %のD "、&n)は、N) { 用(i = 0 ; iがn <I ++は) { scanf関数(" %D%dの"、および[I] .S& [I]。 T); A [i]が.Zは = [I] .S +([I] .ta [I] .S)/ 2。// 中点根据这个排序 [I] .D =([I] .ta [I] .S)/ 2 + 1。// 需要牧师的时间段 } ソート(A + N、CMP)。 int型最後= 0 ; int型、F = 1 。 用(i = 0 ; iがn <; iは++ ) { 場合(MAX(最後に、[I] .S)+ [I] .D <= [I] .T)最後= MAX(最後に、[ I] .S)+ [I] .D。 他に F = 0 ; } であれば(F ==0)COUT << " NO \ n " 。 他の裁判所未満<< " YES \ N " ; } 戻り 0 。 }