USACO2020DEC第二題(Daisy Chains)題解
阿新 • • 發佈:2021-01-11
技術標籤:USACO題解
題目
題目描述
每天,作為她繞農場行走的一部分,奶牛 Bessie 會經過她最喜愛的草地,其中種有 N 朵花(五顏六色的雛菊),編號為 1…N(1≤N≤100),排列成一行。花 i 有 pi 朵花瓣(1≤pi≤1000)。
作為一名嶄露頭角的攝影家,Bessie 決定給這些花拍些照片。具體地說,對於每一對滿足 1≤i≤j≤N 的花 (i,j),Bessie 會給從花 i 到花 j 之間的所有花(包括 i 和 j)拍一張照。
後來 Bessie 檢視這些照片時注意到有些照片裡存在「平均」的花——一朵恰好有 P 朵花瓣的花,其中 P 等於照片中所有花的花瓣數量的平均值。
Bessie 的照片中有幾張存在平均的花?
輸入的第一行包含 N。第二行包含 N 個空格分隔的整數 p1…pN。
輸出
輸出存在平均的花的照片數量。
樣例輸入
4
1 1 2 3
樣例輸出
6
解題思路
直接按照題目要求模擬,然後判斷,累加答案。
參考程式碼
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, ans = 0; cin >> n;
int a[n + 1], sum[n + 1]; sum[0] = 0;
for (int i = 1; i <= n; ++i) {
cin >> a[i]; sum[i] = sum[i - 1] + a[i];
}
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n; ++j) {
bool flag = false;
for (int k = i; k <= j; ++k) {
if (sum[j] - sum[i - 1] == (j - i + 1) * a[k]) {
flag = true; break ;
}
}
ans += flag;
}
}
cout << ans << '\n';
return 0;
}