原题地址:http://codeforces.com/problemset/problem/383/A

题目大意:有 n 头奶牛,全部看着左边或者右边,现在开始给奶牛挤奶,给一头奶牛挤奶时,所有能看到它的奶牛会损失一升奶,已经挤过的奶牛不会再损失,求一种挤奶顺序,使得失去的牛奶数最少。(1 <= n <= 200000)

题目分析:考场上看到它的时候想:这不就是一个裸的线段树么……但是由于线段树不熟就没写出来……考完参照网上一些解法发现自己真的是想多了……唉……原来是贪心

我们需要证明以下一个性质:

最优值一定会出现在先挤完所有向左看的奶牛或者所有向右看的奶牛这两种情况之中(当然不止会出现在这两种情况之中),并且,我们一定先从最右边的向左看的奶牛或者最左边的向右看的奶牛挤起。

首先第二条性质不难理解,如果我们先从中间的一个挤起,必然不会比挤最边上的那头更优,可以用反证法来证明一下。

设suml[i]为从1 ~ i向左看的奶牛的个数,sumr[i]为从1 ~ i向右看的奶牛的个数,假设第k、j头奶牛是向左看的(且j在k的右边),若先挤第k头奶牛更优,则必须满足

suml[n] - suml[k] + sumr[k - 1] + suml[n] - suml[j] + sumr[j - 1] <= suml[n] - suml[j] + sumr[j - 1] + (suml[n] - 1 - suml[k]) + sumr[k - 1] (减一是因为 j 已经被挤过了,不可能再失去牛奶)这显然不会成立

第一条性质也因此变得显然了,加入我们先挤看着右边的,假设共有w头奶牛能看到最右边的看着左边的奶牛(权且成为P),那么同理,P能看到的看着右边的奶牛有且仅有w头,那么在挤这w头奶牛的过程中,P会失去w单位的奶,而如果我们先挤P,那w头奶牛也会失去w单位的奶,所以它们是等价的。

那么只需要扫一遍就好啦~

 //date 20140121
#include <cstdio>
#include <cstring>
#include <iostream> using namespace std; const int maxn = ; inline int getint()
{
int ans(); char w = getchar();
while('' > w || w > '')w = getchar();
while('' <= w && w <= '')
{
ans = ans * + w - '';
w = getchar();
}
return ans;
} int n;
int stu[maxn], l[maxn], r[maxn]; int main()
{
// freopen("c.in", "r", stdin); n = getint();
for(int i = ; i <= n; ++i)stu[i] = getint();
for(int i = ; i <= n; ++i)l[i] = l[i - ] + stu[i - ];
for(int i = n - ; i >= ; --i)r[i] = r[i + ] + (!stu[i + ]);
long long a1 = , a2 = ; for(int i = n; i >= ; --i)a1 += (long long)(stu[i] == ? l[i] : );
for(int i = ; i <= n; ++i)a2 += (long long)(stu[i] == ? r[i] : ); cout << (a1 < a2 ? a1 : a2) << endl;
return ;
}

Codeforces 383A - Milking cows的更多相关文章

  1. CodeForces 384C Milking cows

    水题. 对于两个$0$,肯定是先删去后面的$0$,再删去前面的$0$. 对于两个$1$,肯定是先删去前面的$1$,再删去后面的$1$. 对于一个$0$和一个$1$,无论先删哪一个,对答案做出的贡献都是 ...

  2. Milking Cows

    Milking Cows Three farmers rise at 5 am each morning and head for the barn to milk three cows. The f ...

  3. 洛谷P1204 [USACO1.2]挤牛奶Milking Cows

    P1204 [USACO1.2]挤牛奶Milking Cows 474通过 1.4K提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 请各位帮忙看下程序 错误 ...

  4. codeforce ---A. Milking cows

    A. Milking cows time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. 【题解】Luogu P1204 [USACO1.2]挤牛奶Milking Cows

    原题传送门:P1204 [USACO1.2]挤牛奶Milking Cows 实际是道很弱智的题目qaq 但窝还是觉得用珂朵莉树写会++rp(窝都初二了,还要考pj) 前置芝士:珂朵莉树 窝博客里对珂朵 ...

  6. Milking Cows 挤牛奶

    1.2.1 Milking Cows 挤牛奶 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 554  Solved: 108[Submit][Status ...

  7. 【洛谷P1204】【USACO1.2】挤牛奶Milking Cows

    P1204 [USACO1.2]挤牛奶Milking Cows 题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个 ...

  8. Milking Cows 挤牛奶 USACO 排序 模拟

    1005: 1.2.1 Milking Cows 挤牛奶 时间限制: 1 Sec  内存限制: 128 MB提交: 15  解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1 ...

  9. 【USACO】Milking Cows

    Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer b ...

随机推荐

  1. linux 错误总结

    帝国cms登录后台提示“登录成功”,接着又提示“您还未登录” 把帝国cms文件夹下的/e/data/adminlogin 目录权限不可写导致,请将此目录权限设置为777权限即可解决.就可以正常登录后台 ...

  2. ./configure --prefix=

    一直用这个选项prefix=,但不知道,啥意思. 转载自:----------------------------------------------------------------------- ...

  3. POJ 1680 Fork() Makes Trouble

    原题链接:http://poj.org/problem?id=1680 对这道题,我只能说:我不知道题目是什么意思,但是AC还是没有问题的. 看来题目半天没明白fork()怎么个工作,但是看样例(根据 ...

  4. PAT-乙级-1048. 数字加密(20)

    1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...

  5. PHP中如何给日期加上一个月 加一周 加一天

    echo   date("Y-m-d",strtotime("+1 month",strtotime("2012-02-04"))); 结果 ...

  6. Installing Lua in Mac

    Lua is distributed in source form. You need to build it before using it. Building Lua should be stra ...

  7. Robot framework+python安装使用图解版

    一.安装包 1.Python2.7(一切的基础,切记安装目录不能有中文不能有空格) 1)python2.7:(python环境):python-2.7.msi 2)setuptools(python包 ...

  8. QAQ数论模板笔记√

    #include <cstdio> using namespace std; long long gcd(long long a, long long b) { // (a, b) ret ...

  9. cojs 简单的求和问题 解题报告

    一个上午写了两个数据生成器,三个暴力和两个正解以及一个未竣工的伪正解思路 真是累死本宝宝了 首先这个题目暴力我的数据是有很多良心分的 但是不同的暴力拿到的分数也会有所差距,由于是题解就不说暴力怎么写了 ...

  10. SpringMVC学习总结(三)——Controller接口详解(1)

    4.12.ParameterizableViewController 参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图. <bean name=&quo ...