1. 程式人生 > 其它 >USACO2020DEC第二題(Daisy Chains)題解

USACO2020DEC第二題(Daisy Chains)題解

技術標籤: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; }