AC日记——Cards Sorting codeforces 830B
思路:
线段树;
代码:
#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的更多相关文章
- AC日记——Card Game codeforces 808f
F - Card Game 思路: 题意: 有n张卡片,每张卡片三个值,pi,ci,li: 要求选出几张卡片使得pi之和大于等于给定值: 同时,任意两两ci之和不得为素数: 求选出的li的最小值,如果 ...
- AC日记——Success Rate codeforces 807c
Success Rate 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...
- AC日记——T-Shirt Hunt codeforces 807b
T-Shirt Hunt 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...
- AC日记——Magazine Ad codeforces 803d
803D - Magazine Ad 思路: 二分答案+贪心: 代码: #include <cstdio> #include <cstring> #include <io ...
- AC日记——Broken BST codeforces 797d
D - Broken BST 思路: 二叉搜索树: 它时间很优是因为每次都能把区间缩减为原来的一半: 所以,我们每次都缩减权值区间. 然后判断dis[now]是否在区间中: 代码: #include ...
- AC日记——Array Queries codeforces 797e
797E - Array Queries 思路: 分段处理: 当k小于根号n时记忆化搜索: 否则暴力: 来,上代码: #include <cmath> #include <cstdi ...
- AC日记——Maximal GCD codeforces 803c
803C - Maximal GCD 思路: 最大的公约数是n的因数: 然后看范围k<=10^10; 单是答案都会超时: 但是,仔细读题会发现,n必须不小于k*(k+1)/2: 所以,当k不小于 ...
- AC日记——Vicious Keyboard codeforces 801a
801A - Vicious Keyboard 思路: 水题: 来,上代码: #include <cstdio> #include <cstring> #include < ...
- AC日记——Valued Keys codeforces 801B
801B - Valued Keys 思路: 水题... 来,上代码: #include <cstdio> #include <cstring> #include <io ...
随机推荐
- EA画时序图初试
1.步骤: 1. 新建一个项目: 2. Use Case Model右键-->添加图-->左边选择UML Behavioral,右边选择Sequence: 3. 选择工具栏中的工具,点击工 ...
- angular 的 @Input、@Output 的一个用法
angular 使用 @input.@Output 来进行父子组件之间数据的传递. 如下: 父元素: <child-root parent_value="this is parent ...
- python入门篇之介绍和流程控制(一)
Python入门 一.第一句python代码 很多语言的第一句python代码都是以“你好,世界”开始的,那么我们的python也是如此. 在 /home/dev/ 目录下创建 hello.py 文件 ...
- poi对word的操作(总结)
★★★ POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument. 1.正文段落:一个文档包含多个段落Paragraph,一个段落包含多个Runs,一个R ...
- NOIP2013 提高组 Day2
期望得分:100+100+30+=230+ 实际得分:100+70+30=200 T2 觉得题目描述有歧义: 若存在2i却不存在2i+1,自己按不合法做的,实际是合法的 T3 bfs 难以估分 虽然 ...
- ZOJ 3781 Paint the Grid Reloaded 连通块
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781 题意:n*m只由OX组成的矩阵,可以选择某一连通块变成另一 ...
- spring bean初始化及销毁你必须要掌握的回调方法
spring bean在初始化和销毁的时候我们可以触发一些自定义的回调操作. 初始化的时候实现的方法 1.通过java提供的@PostConstruct注解: 2.通过实现spring提供的Initi ...
- [转]FILE的用法
#include <stdio.h> int main() { char c; ; FILE *file; file = fopen("test.txt", " ...
- h5+js随机拖动鼠标产生动画效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【Tomcat】tomcat设置http文件下载,配置文件下载目录
tomcat作为http的下载服务器,网上有很多办法 但我认为最简单的是:(亲测有效) 1.直接把文件放在 /var/lib/tomcat6/webapps/ROOT 目录下, 2.然后在网址中访问: ...