/* 第一题 100%AC (异或优化半天还是30%) */ #include <stdio.h> #include <iostream> #include <vector> #include <string> #include <unordered_map> #include <algorithm> using namespace std ; int main() {     int n;     vector < int > nums;     // 注意 while 处理多个 case     while ( cin >> n) {         nums. clear ();         for ( int i = 0 ; i < n; ++i) {             int element;             cin >> element;             nums. push_back (element);         }         sort (nums. begin (), nums. end ());         int sum = 0 ;         int count = 1 ;         int flag = true ;         for ( int i = 1 ; i < n; ) {             int temp = nums[ i ] - nums[ i - 1 ];             if (temp <= 10 ) {                 ++i;                 ++count;                 flag = true ;                 if (count == 3 ) {                     if (i >= n) {                         flag = false ;                         break ;                     }                     ++i;                     count = 1 ;                     flag = true ;                 }             } else if (temp > 10 && temp <= 20 ) {                 if (count == 1 ) {                     i += 2 ;                     ++sum;                     flag = false ;                 } else if (count == 2 ) {                     ++i;                     count = 1 ;                     ++sum;                     flag = true ;                 }             } else if (temp > 20 ) {                 if (count == 1 ) {                     ++i;                     sum += 2 ;                 } else if (count == 2 ) {                     ++i;                     count = 1 ;                     ++sum;                 }                 flag = true ;             }         }         if (count == 1 && flag) {             sum += 2 ;         }         if (count == 2 ) ++sum;         cout << sum << endl ;     }        return 0 ; }
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
12-03 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
牛客网
牛客企业服务