开始计概A下半学期。

This commit is contained in:
rogerwang2008 committed 2026-11-09 21:13:09 +08:00
1 parent 0cfdc8499c
commit 38e97654e1
31 files changed
+2144 -110

No files matched your search

+54
View File
@@ -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;
}