校内题,不给传送门了。

以前做完NOIp2013的火柴排队那道题后,当时很担心NOIp会出那种题,因为贪心的规则能不能看出来真的要看运气。但是这类题做多了后发现其实那道题的规则其实是很多题都已经用到了。

给定一个无序序列,要求相邻之间交换已达到有序,这样子总的逆序对的和就是答案。但是这道题要求上多了一层,即要求分为两段有序即可。这就需要人为规定各个数字的大小。

比如题目样例,3 5 4 2 1,逆序对为8,排序后为 1 2 3 4 5,假设这里1是整体最大的数,即2 3 4 5 1应该是最后排完序的,似乎要再跑一次逆序对?

完全不必,考虑从1到$N$递增的枚举,对于每个数,假设这个数是最小的,那么设这个数在数组中的下标为$pos$,那么如果把他排到队末,增加的逆序对数为$N-pos$,而减少的逆序对数则为$pos-1$,这样不断枚举就可得到本题的最后答案。

//OJ 1602
//by Cydiater
//2016.10.7
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <iomanip>
using namespace std;
#define ll long long
#define up(i,j,n)        for(int i=j;i<=n;i++)
#define down(i,j,n)        for(int i=j;i>=n;i--)
const int MAXN=1e6+5;
const int oo=0x3f3f3f3f;
inline ll read(){
    char ch=getchar();ll x=0,f=1;
    while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
ll N,a[MAXN],c[MAXN],tmp=0,ans=10000000000000LL,b[MAXN];
namespace solution{
    inline int lowbit(int i){return (i)&(-i);}
    void init(){
        N=read();
        up(i,1,N)b[a[i]=read()]=i;
    }
    void insert(int num,int flag){
        for(int i=num;i<=N;i+=lowbit(i))c[i]+=flag;
    }
    ll get(ll num){
        ll ttt=0;
        for(int i=num;i>=1;i-=lowbit(i))ttt+=c[i];
        return ttt;
    }
    void slove(){
        down(i,N,1){
            tmp+=get(a[i]-1);
            insert(a[i],1);
        }
        up(i,1,N){
            tmp-=(b[i]-1);
            tmp+=(N-b[i]);
            ans=min(ans,tmp);
        }
        cout<<ans<<endl;
    }
}
int main(){
    //freopen("input.in","r",stdin);
    //freopen("out.out","w",stdout);
    using namespace solution;
    init();
    slove();
    return 0;
}

[USACO2009 NOV GOLD]奶牛的图片的更多相关文章

  1. BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )

    高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...

  2. bzoj 2017 [Usaco2009 Nov]硬币游戏 动态规划

    [Usaco2009 Nov]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 431  Solved: 240[Submit][Status] ...

  3. BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP

    BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP Description 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏. 初始时,一个有N(5 ...

  4. bzoj1770: [Usaco2009 Nov]lights 燈(折半搜索)

    1770: [Usaco2009 Nov]lights 燈 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1153  Solved: 564[Submi ...

  5. BZOJ_[usaco2007 Nov]relays 奶牛接力跑_离散化+倍增弗洛伊德

    BZOJ_[usaco2007 Nov]relays 奶牛接力跑_离散化+倍增弗洛伊德 Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们 ...

  6. 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑 矩阵乘法

    [BZOJ1706][usaco2007 Nov]relays 奶牛接力跑 Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项 ...

  7. BZOJ 1706: [usaco2007 Nov]relays 奶牛接力跑

    Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T < ...

  8. bzoj2019 [Usaco2009 Nov]找工作

    Description 奶牛们没钱了,正在找工作.农夫约翰知道后,希望奶牛们四处转转,碰碰运气.而且他还加了一条要求:一头牛在一个城市最多只能赚D(1 <= D <= 1,000)美元,然 ...

  9. bzoj2018 [Usaco2009 Nov]农场技艺大赛

    Description Input 第1行:10个空格分开的整数: N, a, b, c, d, e, f, g, h, M Output 第1行:满足总重量最轻,且用度之和最大的N头奶牛的总体重模M ...

随机推荐

  1. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    yu Code 15 Comments  机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accu ...

  2. latex中页面距离的设置

    1.页面设置 a4 会给你一个较小的页面,为了使用更多的控制,可用 geometry宏包和命令 \layout . 2.改变长度 在latex里改变长度的命令是 \addtolength 和 \set ...

  3. equals()的用法

    比如,两个对象 c1, c2; 那么,c1.equals(c2) == true; 则表示c1, c2两个变量的值是一致的 equals适用于所有对象,这是一种特殊方法 equals这种表现形式我们一 ...

  4. CSS巩固

    1. 浮动元素与非浮动元素在一行,浮动元素不占宽度.所以应将非浮动元素改为浮动,或让非浮动元素的宽度为当前行的宽度. 元素浮动之后,周围的元素会重新排列. 2. 布局找模板,或参考其他网站! 自己进行 ...

  5. PHP Apache 配置伪静态

    1.首先是开启rewrite_module(如何开启,百度搜索) 2.创建.htaccess文件(如何创建,百度搜索) 3.在.htaccess文件中打开重写服务:RewriteEngine On 4 ...

  6. SpringMVC学习--json

    简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestB ...

  7. PyQt之布局&无边框&信号

    这个例子相对综合一些,包括qt的布局,实现无边框效果,无边框也就是没有了窗口的title栏,没有title栏就不能拖动了, 所以我们进一步讲如何实现拖动.通过这边文章你可以掌握qt的布局,窗口定制,重 ...

  8. mysql优化基础

    唯一索引(unique index)强调唯一,就是索引值必须唯一. create unique index [索引名] on 表名 (列名);alter table 表名 add unique ind ...

  9. Jquery ui autocomplete简单api

    重要说明:与配置选项类似,Autocomplete插件的方法也不是直接调用,而且通过autocomplete()方法进行间接调用.例如: $("#title").autocompl ...

  10. Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...