Valerii Against Everyone
题目大意:
有两个数组A,B满足Ai = 2^Bi,现给出数组B,问能否找出四个数l1,r1,l2,r2,使得
Al1+...+Ar1 = Al2+...+Ar2
思路:
可以考虑l1 = r1 和 l2 = r2,即找到数组B中两个相同的两个数,如果存在,就输出YES,否则输出NO,因为如果所有数都不同,那么选择一个数相当于选了一个二进制位,所有二进制位都不同,则两个数也不同
参考代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3 int main() {
4 int t,n,a[1010];
5 cin >> t;
6 while(t--) {
7 cin >> n;
8 for(int i = 1; i <= n; i++) cin >> a[i];
9 bool ok = false;
10 sort(a+1,a+n+1);
11 for(int i = 1; i <= n-1; i++) {
12 if(a[i] == a[i+1]) {
13 ok = true;
14 break;
15 }
16 }
17 if(ok) cout << "YES" << endl;
18 else cout << "NO" << endl;
19 }
20 return 0;
21 }


浙公网安备 33010602011771号