思路:根据贪心思想,肯定是先从一边开始喂牛,因为如果从中间喂,两边惊吓的牛会更多,所以考虑从左边开始喂,显然对于从左到右,我们先喂面向右边的,这样所有面向右边的牛不会再产生贡献,此时的贡献就是面向左的牛看这些牛产生的贡献。
同理从右到左也是一样,因为假设 a 1 = 1 , a 2 = 0 a_1=1,a_2=0 a1=1,a2=0,因为喂 a 1 a_1 a1时, a 2 a_2 a2会产生贡献,同理喂 a 2 a_2 a2时 a 1 a_1 a1也产生贡献,他们是等价的。
AC代码:
#include<cstdio>
using namespace std;
typedef long long ll;
int main(){
int n;
ll cnt=0,ans=0;
scanf("%d",&n);
for(int i=1,x;i<=n;i++){
scanf("%d",&x);
if(x) cnt++;
else ans+=cnt;
}
printf("%lld\n",ans);
return 0;
}