Cards Sorting

思路:

  线段树;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 100005
#define INF 0x3f3f3f3f
#define maxtree maxn<<2
int n,ai[maxn],val[maxtree],L[maxtree],R[maxtree],Min[maxtree];
int P[maxtree],mid[maxtree];
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void updata(int now)
{
val[now]=val[now<<]+val[now<<|];
Min[now]=min(Min[now<<],Min[now<<|]);
if(Min[now]==Min[now<<|]) P[now]=P[now<<|];
else P[now]=P[now<<];
}
void build(int now,int l,int r)
{
L[now]=l,R[now]=r;
if(l==r)
{
Min[now]=ai[l],P[now]=l,val[now]=;
return;
}
mid[now]=l+r>>;
build(now<<,l,mid[now]);
build(now<<|,mid[now]+,r);
updata(now);
}
void change(int now,int to)
{
if(L[now]==R[now])
{
val[now]=,Min[now]=INF,P[now]=;
return;
}
if(to<=mid[now]) change(now<<,to);
else change(now<<|,to);
updata(now);
}
int query(int now,int l,int r)
{
if(L[now]>=l&&R[now]<=r) return val[now];
int res=;
if(l<=mid[now]) res+=query(now<<,l,r);
if(r>mid[now]) res+=query(now<<|,l,r);
return res;
}
int get(int now,int l,int r)
{
if(L[now]>=l&&R[now]<=r) return P[now];
int tmp1=,tmp2=;
if(l<=mid[now]) tmp1=get(now<<,l,r);
if(r>mid[now]) tmp2=get(now<<|,l,r);
if(tmp2&&tmp1)
{
if(ai[tmp1]<ai[tmp2]) return tmp1;
else return tmp2;
}
if(tmp2) return tmp2;
if(tmp1) return tmp1;
return ;
}
int main()
{
in(n);
for(int i=;i<=n;i++) in(ai[i]);
int l=,r=n;while(l<r) swap(ai[l],ai[r]),l++,r--;
build(,,n);
int now=n,tmp1,tmp2,tmp;
long long ans=;
for(int i=;i<=n;i++)
{
tmp1=,tmp2=,tmp1=get(,,now);
if(now<n) tmp2=get(,now+,n);
if(tmp1&&tmp2)
{
if(ai[tmp2]<ai[tmp1]) tmp=tmp2;
else tmp=tmp1;
}
else if(tmp1) tmp=tmp1;
else tmp=tmp2;
if(tmp<=now) ans+=query(,tmp,now);
else ans+=query(,,now)+query(,tmp,n);
change(,tmp),now=tmp;
}
cout<<ans;
return ;
}

AC日记——Cards Sorting codeforces 830B的更多相关文章

  1. AC日记——Card Game codeforces 808f

    F - Card Game 思路: 题意: 有n张卡片,每张卡片三个值,pi,ci,li: 要求选出几张卡片使得pi之和大于等于给定值: 同时,任意两两ci之和不得为素数: 求选出的li的最小值,如果 ...

  2. AC日记——Success Rate codeforces 807c

    Success Rate 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...

  3. AC日记——T-Shirt Hunt codeforces 807b

    T-Shirt Hunt 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...

  4. AC日记——Magazine Ad codeforces 803d

    803D - Magazine Ad 思路: 二分答案+贪心: 代码: #include <cstdio> #include <cstring> #include <io ...

  5. AC日记——Broken BST codeforces 797d

    D - Broken BST 思路: 二叉搜索树: 它时间很优是因为每次都能把区间缩减为原来的一半: 所以,我们每次都缩减权值区间. 然后判断dis[now]是否在区间中: 代码: #include ...

  6. AC日记——Array Queries codeforces 797e

    797E - Array Queries 思路: 分段处理: 当k小于根号n时记忆化搜索: 否则暴力: 来,上代码: #include <cmath> #include <cstdi ...

  7. AC日记——Maximal GCD codeforces 803c

    803C - Maximal GCD 思路: 最大的公约数是n的因数: 然后看范围k<=10^10; 单是答案都会超时: 但是,仔细读题会发现,n必须不小于k*(k+1)/2: 所以,当k不小于 ...

  8. AC日记——Vicious Keyboard codeforces 801a

    801A - Vicious Keyboard 思路: 水题: 来,上代码: #include <cstdio> #include <cstring> #include < ...

  9. AC日记——Valued Keys codeforces 801B

    801B - Valued Keys 思路: 水题... 来,上代码: #include <cstdio> #include <cstring> #include <io ...

随机推荐

  1. ros error : c++: error: $(catkin_LIBRARIES): 没有那个文件或目录

    卧槽,真是........................瞎眼了. 一个半小时才找出错误来..... c++: error: $(catkin_LIBRARIES): 没有那个文件或目录 Oh my ...

  2. Hdu2433 Travel

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. react-native安装react-navigation后出现package-lock.json文件的坑

    npm5.0开始安装后回生成一个新的package-lock.json文件.以致初始化好的react-native项目引入的依赖被删除. 目前解决办法.使用facebook的yarn add 第三方组 ...

  4. 2015年IPC网络摄像机技术发展现状分析

    网络摄像机将图像转换为基于TCP/IP网络标准的数据包,使摄像机所摄的画面通过RJ-45以太网接口或WIFI WLAN无线接口直接传送到网络上,通过网络即可远端监视画面. 一.网络摄像机的基本原理 网 ...

  5. background(css复合写法)

    1. 背景-background========================================================== 单个属性的写法 .sample1 { /*背景颜色 ...

  6. 2.redis设计与实现--链表

    1.链表节点: 2.链表: 3.总结

  7. 今日文摘:浅谈 HTML5 的游戏化之路

    如今商业网站中用于广泛的HTML5无限下拉效果已经越来越受到游戏网站的喜爱.各个品牌为了打造专属自己的游戏特色,纷纷推出了模拟HTML5效果的品牌 站,且都起到了相当好的效果.可是从很多方面来说我们对 ...

  8. SDUT 3918

    Description 这一天希酱又补了一卦,没想到每个人都发到了一张印有整数的牌,现在希酱想要继续占卜的话需要知道每个人手里拿的牌的整数具体是多少,但是她们却打起了哑谜.  穗乃果:我拿到的是 2 ...

  9. 在Unity中实现屏幕空间反射Screen Space Reflection(1)

    本篇文章我会介绍一下我自己在Unity中实现的SSR效果 出发点是理解SSR效果的原理,因此最终效果不是非常完美的(代码都是够用就行),但是从学习的角度来说足以学习到SSR中的核心算法. 如果对核心算 ...

  10. HDU 1072 Nightmare (广搜)

    题目链接 Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth with a ...