开始计概A下半学期。
This commit is contained in:
1 parent
0cfdc8499c
commit
38e97654e1
31 files changed
+2144
-110
No files matched your search
@@ -0,0 +1,54 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
bool validate_arithmetic(const std::vector<bool>& bucket) {
|
||||
if (bucket.size() <= 1) { return false; }
|
||||
int previous_idx = -1, distance = -1;
|
||||
for (int i = 0; i < bucket.size(); i++) {
|
||||
if (!bucket[i]) { continue; }
|
||||
if (previous_idx == -1) {
|
||||
previous_idx = i;
|
||||
continue;
|
||||
}
|
||||
if (distance == -1) {
|
||||
distance = i - previous_idx;
|
||||
}
|
||||
if (i - previous_idx != distance) {
|
||||
return false;
|
||||
}
|
||||
previous_idx = i;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int clac_ans(const std::vector<int>& nums) {
|
||||
if (nums.size() == 1) { return 0; }
|
||||
std::vector<bool> bucket_begin(nums.size(), false);
|
||||
std::vector<bool> bucket_end(nums.size(), true);
|
||||
|
||||
int ans = 0;
|
||||
for (int i = 0; i < nums.size(); i++) {
|
||||
bucket_begin[nums[i]] = true;
|
||||
bucket_end[nums[i]] = false;
|
||||
if (validate_arithmetic(bucket_begin) && validate_arithmetic(bucket_end)) {
|
||||
ans++;
|
||||
std::clog << i << std::endl;
|
||||
}
|
||||
}
|
||||
return ans - 1;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::ios::sync_with_stdio(false);
|
||||
std::cin.tie(nullptr);
|
||||
|
||||
int n;
|
||||
std::cin >> n;
|
||||
while (std::cin >> n) {
|
||||
std::vector<int> nums(n);
|
||||
for (int i = 0; i < n; i++) { std::cin >> nums[i], nums[i]--; }
|
||||
std::cout << clac_ans(nums) << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user