[贪心]cf225cMilking cows
来源:互联网 发布:网络配音圈子 编辑:程序博客网 时间:2024/06/17 03:28
Iahub helps his grandfather at the farm. Today he must milk the cows. There aren cows sitting in a row, numbered from 1 to n from left to right. Each cow is either facing to the left or facing to the right. When Iahub milks a cow, all the cows that see the current cow get scared and lose one unit of the quantity of milk that they can give. A cow facing left sees all the cows with lower indices than her index, and a cow facing right sees all the cows with higher indices than her index. A cow that got scared once can get scared again (and lose one more unit of milk). A cow that has been milked once cannot get scared and lose any more milk. You can assume that a cow never loses all the milk she can give (a cow gives an infinitely amount of milk).
Iahub can decide the order in which he milks the cows. But he must milk each cow exactly once. Iahub wants to lose as little milk as possible. Print the minimum amount of milk that is lost.
The first line contains an integer n (1 ≤ n ≤ 200000). The second line contains n integers a1,a2, ..., an, where ai is 0 if the cow number i is facing left, and1 if it is facing right.
Print a single integer, the minimum amount of lost milk.
Please, do not write the %lld specifier to read or write 64-bit integers in С++. It is preferred to use thecin, cout streams or the%I64d specifier.
40 0 1 0
1
51 0 1 0 1
3
In the first sample Iahub milks the cows in the following order: cow 3, cow 4, cow 2, cow1. When he milks cow 3, cow4 loses 1 unit of milk. After that, no more milk is lost.
我们把能看见牛i的牛的集合分为两部分:Si表示和i朝同一个方向(即在i的背后),Di表示和i朝相反方向(即与i面对)。存在下面两个事实:
i贡献的值vi>=|Si|。因为S中的牛看见i死,和i看见S的一个子集中的牛死的次数之和等于n。另外i还可能被D中的牛看到,这部分不确定。
i贡献的值vi可以取到n,即S中的牛全死了,然后i背后的牛全死了,然后i死了,然后i面前剩余的牛死了。
同理D中的所有牛都是最优的,因为他们贡献的值vi都等于最小值|Si|。
根据以上证明,我们一定可以选择一个最右边的1,或者最左边的0,将其作为i。因此最优值为∑|S|
#include <cstdio>#include <iostream>using namespace std;typedef long long ll;int main(){//freopen("c.in","r",stdin);//freopen("c.out","w",stdout);int n;cin >> n;ll ans =0;ll t = 0;while (n--){int i;cin >> i;if (i) t++;else ans += t;}cout << ans;}
- [贪心]cf225cMilking cows
- poj2456Aggressive cows(二分+贪心)
- usaco Milking Cows (贪心)
- POJ 2181 Jumping Cows [贪心]
- POJ2456 Aggressive cows(二分+贪心)
- poj 2181 Jumping Cows 贪心
- poj2495 Aggressive cows(贪心+二分)
- Milking Cows 挤牛奶--贪心
- 【POJ】2181-Jumping Cows 贪心
- Codeforces 383A Milking cows(贪心)
- poj 2456 Aggressive cows(贪心+二分)
- POJ 2456 Aggressive cows(二分+贪心)
- poj 2456 Aggressive cows(贪心+二分)
- POJ 2456 Aggressive cows(贪心+二分)
- Codeforces 383 A. Milking cows(贪心)
- [二分+贪心] poj 2456 Aggressive cows
- poj2456-Aggressive cows(nyoj586)【贪心-二分】
- POJ 2456 Aggressive cows (二分 + 贪心)
- HDU 3336 kmp的应用
- UML之时序图
- Irrlicht学习备忘录——12 TerrainRendering
- [贪心]cf225bMultitasking
- /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 比较
- [贪心]cf225cMilking cows
- 2013年吴超的个人总结
- Java基础-容器
- 【并查集】hdu1272
- startActivityForResult与onActivityResult
- Codefoces 387A George and Sleep(水题)
- 巴巴运动重做小记(40-50)
- 什么是敏捷软件测试
- 敏捷软件测试的七个关键成功要素