ÌâÄ¿Á´½Ó£ºuva 1420 - Priest John's Busiest Day
ÌâÄ¿´óÒ⣺ÓÐÒ»¸ö˾ÒÇ£¬ÒªÖ÷³Ön³¡»éÀñ£¬¸ø³ö»éÀñµÄÆðʼʱ¼äºÍÖÕֹʱ¼ä£¬Ã¿¸ö»éÀñÐèÒª³¬¹ýÒ»°ëµÄʱ¼ä×öΪÒÇʽ£¬²¢ÇÒÒÇʽ²»ÄÜÖÕÖ¹¡£ÎÊ˵˾ÒÇÄÜ·ñÖ÷³Ön³¡»éÀñ¡£
½âÌâ˼·£ºÌ°ÐÄ£¬ÎªÁ˾¡Á¿Ö÷³Ö¶àµÄ»éÀñ£¬Ã¿³¡µÄÒÇʽʱ¼ä¾ÍÒ»¶¨Òª¾¡Á¿¶Ìd=(t-s)/2+1,(ÒòΪ±ØÐë´óÓÚÒ»°ë£¬ËùÒÔ¼Ó1£©¡£È»ºó°´ÕÕÿ³¡»éÀñ¿ÉÒÔ×îÔç½áÊøµÄʱ¼äÅÅÐòs+d£¬£¨ÒòΪҪÂú×ãËùÓеĻéÀñ£¬ËùÒÔ¾¡Á¿½â¾öÔçµãµÄÒÇʽ£¬ÌÚ³öʱ¼äÀ´¸øºóÃæµÄ»éÀñ£©£¬Î¬»¤Ò»¸öÕ¼ÓÃʱ¼äÖµ¼´¿É¡£
¶ÓÓѵÄ×ö·¨Êǽ«Ã¿³¡»éÀñ°´ÕÕ×îÍí½áÊøµÄʱ¼äÅÅÐòt-d£¬»á±È½ÏºÃÀí½âÒ»µã¡£
#include#include #include using namespace std; const int N = 100005; struct state { int s, t, d; }p[N]; int n; bool cmp(const state& a, const state& b) { return a.s + a.d < b.s + b.d; } void init() { for (int i = 0; i < n; i++) { scanf("%d%d", &p[i].s, &p[i].t); p[i].d = (p[i].t - p[i].s) / 2 + 1; } sort(p, p + n, cmp); } bool judge() { int tmp = 0; for (int i = 0; i < n; i++) { tmp = max(tmp, p[i].s) + p[i].d; if (tmp > p[i].t) return false; } return true; } int main() { while (scanf("%d", &n) == 1 && n) { init(); printf("%s\n", judge() "YES" : "NO"); } return 0; }