P6123 [NEERC2016] Hard Refactoring 題解

cath20發表於2024-05-03

本題說白了,就是一道big模擬!!!

題意不再贅述,我們直接看思路。這裡作者借鑑了某差分思想:

  1. 末尾加空格,用於判斷最後一個條件;

  2. 若只有 \(\le\),對給出的數字和陣列第一個進行標記。標記的時候要+32769,因為陣列中不存在負數下標,以免越界;

  3. 若只有 \(\ge\),就標記給出的數字和陣列最後一個;

  4. 若都有,就標記本條件中給出的資料對應的下標;

  5. 若錯開(如,\(x \le 7 \ \&\& \ x \ge 4567\)),不標記;

  6. 若所有的輸入條件都出現了錯開(如,\(x \le 7 \&\& x \ge 4567\))的情況,就輸出false

  7. 從頭到尾掃一遍,若s一直不為0(除了最後一個),輸出true

  8. 剩下的和區間一樣,輸出要做特殊處理:

  • 建一個bool,存的是true即為前面輸出過,反之亦然;
  • 輸出過的話,就先輸出||再輸出資料;

程式碼就不貼了

相關文章