Codeforces Round #577(Div. 2) ~ B

题目大意:

给你n个数,你能够选择两个数,可无限将这两个数同时减一,直到其中一数为0。问是否能将所用的数变成0。

思路:

其实就是数值相互抵消的问题,可想到当所有数的和为奇数时,肯定会有一个1无法消去;另外当一个数特别大时,大过了其他数的和,即最大值大于所有和的一半时,这个最大值也是无法变成0的。

解题代码:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cmath>
 5 #include <string>
 6 #include <cstring>
 7 #include <map>
 8 using namespace std;
 9 const long long N = 1e9 + 7;
10 typedef long long ll;
11 map <char,int> ma;
12 ll sum;
13 int n,maxnum,a;
14 
15 int main()
16 {
17     cin >> n;
18     while(n--)
19     {
20         cin >> a;
21         sum += a;
22         maxnum = max(maxnum , a);
23     }
24     if(sum % 2 == 1 || maxnum > sum/2)
25         cout << "NO" << endl;
26     else
27         cout << "YES" << endl;
28     return 0;
29 }

 

 

posted @ 2020-03-17 16:09  emhhbw==  阅读(102)  评论(0)    收藏  举报