1 solutions
-
4
题意
在一个数列里求三个连续的区间,三个区间的和分别为 ,,
思路
首先老师优化思路 1 有用,先写上。
然后解释一下优化思路 2:
由于是求区间和,所以公式是 ( 是区间和数组)
移项就是 ,其他两个也是这样的道理
代码
#include <bits/stdc++.h> // 不开 long long 见祖宗 #define int long long using namespace std; int a[200005],s[200005]; signed main(int argc, char **argv){ int n,p,q,r; cin >> n >> p >> q >> r; for (int i = 1;i <= n;i++){ cin >> a[i]; s[i] = s[i - 1] + a[i]; } for (int i = 0;i <= n;i++){// 这里从 0 开始 if (binary_search(s,s + n + 1,s[i] + p) && binary_search(s,s + n + 1,s[i] + p + q) && binary_search(s,s + n + 1,s[i] + p + q + r)){ printf("Yes"); return 0; } } printf("No"); // 别看这里 // srand(time(0)); // int x = rand() % 23; // if (x < 9) cout << "Yes"; // else cout << "No"; return 0; }
- 1
Information
- ID
- 1056
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 394
- Accepted
- 19
- Uploaded By