cf#225-C - Milking cows-贪心

http://codeforces.com/contest/384/problem/C

这题题意就是 1表示牛向右看,0表示牛向左看,怎么杀牛,能让牛看到自己同伴被杀受到的惊吓最小。

贪心策略是,先杀所有向左看的牛,从最左边的0牛(看左)开始杀,这样就能保证每次杀的时候,该头牛只减少向右看的牛的牛奶,而不对其余向左看的有影响。。最后剩下所有向右看的牛也是按顺序杀就不会再损失牛奶了。。。

可以证明 先杀左牛或右牛是等价的。。


#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue> 
#include <map>
#include <set> 
#include <vector>
#include <iostream>
using namespace std;

const double pi=acos(-1.0);
double eps=0.000001; 

__int64 max(__int64 a,__int64 b)
{return a>b?a:b;}  
 
int main() 
{ 
	int i,j;
	int n,d,x; 
	cin>>n;
	__int64 ans=0;
	__int64 sum=0;
	for (i=1;i<=n;i++)
	{
		scanf("%d",&x);
		if (x)
			ans++;
		else
			sum+=ans;
	} 
	printf("%I64d\n",sum);
	
	return 0;
	
}


你可能感兴趣的:(cf#225-C - Milking cows-贪心)