先一遍reverse+逆序对个数。

要开long long啊。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100500
using namespace std;
int n,a[maxn],pos[maxn],l,bit[maxn];
long long ans=;
int lowbit(int x) {return (x&(-x));}
void rev(int l,int r)
{
for (int i=l;i<=r;i++)
{
if ((i<<)>=l+r) break;
swap(a[i],a[l+r-i]);
}
}
int ask(int now)
{
int ret=;
for (int i=now;i>=;i-=lowbit(i))
ret+=bit[i];
return ret;
}
void insert(int now,int val)
{
for (int i=now;i<=n;i+=lowbit(i))
bit[i]+=val;
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
l=;
for (int i=;i<=n;i++)
{
if (a[i]>a[i-])
{
rev(l,i-);
l=i;ans++;
}
}
rev(l,n);ans++;
for (int i=;i<=n;i++) pos[a[i]]=i;
for (int i=n;i>=;i--)
{
ans+=(long long)ask(pos[i]-);
insert(pos[i],);
}
printf("%lld\n",ans);
return ;
}
//Flaze naive!

BZOJ 3176 Sort的更多相关文章

  1. 【BZOJ】【1552】【Cerc2007】robotic sort / 【3506】【CQOI2014】排序机械臂

    Splay 离散化+Splay维护序列…… 好吧主要说一下我做这道题遇到的几个错误点: 1.离散化 2.由于找到的这个数的位置一定是大于等于 i 的,所以其实在把它splay到根以后,i 结点只能sp ...

  2. BZOJ 1552: [Cerc2007]robotic sort( splay )

    kpm大神说可以用块状链表写...但是我不会...写了个splay.... 先离散化 , 然后splay结点加个min维护最小值 , 就可以了... ( ps BZOJ 3506 题意一样 , 双倍经 ...

  3. BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )

    题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x ...

  4. BZOJ 4143: [AMPPZ2014]The Lawyer( sort )

    水题... 排序搞出每天的会议有哪些, 然后再按照会议的开始时间和结束时间排序, 最晚开始的和最早结束的会议不是同一场而且最晚开始的时间>最早结束的会议就有可能方案 -------------- ...

  5. 【BZOJ】1552/3506 [Cerc2007]robotic sort

    [算法]splay [题解] splay维护序列,用权值(离散化)作为编号.每次找第i小的话直接找对应编号splay即可. 但是这样splay没有下传翻转标记?直接暴力找到路径然后从根到改结点push ...

  6. bzoj 1552: [Cerc2007]robotic sort

    1552: [Cerc2007]robotic sort Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1198  Solved: 457[Submit] ...

  7. BZOJ 1552/1506 [Cerc2007]robotic sort

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=1552 [分析] 这题哇!又有翻转操作...每次要输出第几个?是吧... 所以又要用Spla ...

  8. BZOJ 1637: [Usaco2007 Mar]Balanced Lineup( sort + 前缀和 )

    将 0 变为 -1 , 则只需找区间和为 0 , 即前缀和相同的最长区间 , 记录一下每个前缀和出现的最早和最晚的位置 , 比较一下就 OK 了 --------------------------- ...

  9. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

随机推荐

  1. 商业信息管理系统 Bizagi 建模pattern

    WCP 1- Sequence This pattern is used to model dependencies between tasks so that one task cannot sta ...

  2. 点开看看please

  3. git代码冲突解决

    1.git fetch 跟git pull差别是前者不会和本地直接merge code,而后者会,所以git fetch更安全   git fetch origin master:tmpgit dif ...

  4. httpd服务的安装、配置和关于php留言本网站的搭建

    搭建本地yum仓库的方法 http://www.cnblogs.com/lql123/p/5952788.html yum install httpd -y #安装httpd yum install ...

  5. storyboard中的三种传值

    三种传值:属性传值 block传值 以及 代理传值 (这里我用前面的页面和后面的)来表示两个控制器:LoginViewController和RegisterViewController 建立两个控制器 ...

  6. arrayLen

    var i;for (i = categoryList.length - 1; i >= 0; i -= 1) { var categoryValue=categoryList[i]; if ( ...

  7. jQuery判断网页中的id是否有重复的

    From:http://blog.csdn.net/china_skag/article/details/6915323判断网页中的ID是否有重复的:指定ID判断 $(function(){ $(&q ...

  8. linux下查看tomcat和jdk版本号

    linux下查看tomcat和jdk版本号的命令: 这个需要进入到bin目录下面 ,执行"./version.sh"命令 [root@hncsweb bin]# ./version ...

  9. XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)[转]

    目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年啊!!! 作为刚开始学习iOS编程的菜鸟, ...

  10. android小技巧(一)

      1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.AC ...