hdu-2688 Rotate---树状数组+模拟
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2688
题目大意:
给你n数,(n<=3e6),有两个操作,Q为 当前有多少对数,满足严格递增,R l,r为旋转l,r这个区间的数
解题思路:
求严格递增的顺序对我们可以反向用树状数组求逆序对,300W的数据还是有点够呛,不过这里求出来也就nlogn,然后对于旋转操作,因为区间大小不超过1000,我们只需统计该区间的第一个数和后面的数的关系,如果第一个数比后面的数大,就ans++,如果小于就ans--,等于就不管,因为是严格递增,然后就是这里我加入读入优化,感觉还是没什么卵用,反而比不加快,可能我写的优化不行吧。这题卡常数卡的有点紧,要注意常数优化,还有就是HDOJ的稳定性不是很好,同一个代码有时能过,有时不能过
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define N 10001
#define ll long long
#define Lowbit(x) ((x)&(-x)) ll C[N];
ll num[N*];
int T; void add(ll C[],ll pos,ll num) {
while(pos <= N) {//x最大是N
C[pos] += num;
pos += Lowbit(pos);
}
} ll Sum(ll C[],ll end) {
ll sum = ;
while(end > ) {
sum += C[end];
end -= Lowbit(end);
}
return sum;
} int main() {
int n, s, t, i, j, T, k;
ll ans, tmp;
while(~scanf("%d",&T)) {
memset(C,,sizeof(C));
ans = ;
for(i = ; i < T; i ++) {
scanf("%I64d",&num[i]);
add(C,num[i],);
ans += Sum(C,num[i] - );
}
scanf("%d",&n);
char c[];
while(n--) {
scanf("%s",c);
switch(c[]) {
case 'Q':
printf("%I64d\n",ans);
break;
case 'R':
scanf("%d%d",&s,&t);
int v = num[s];
for(i = s; i < t; i++){
num[i] = num[i + ];
if(v > num[i])ans++;
else if(v < num[i])ans--;
}
num[t] = v;
break;
}
} }
return ;
}
hdu-2688 Rotate---树状数组+模拟的更多相关文章
- HDU 2689Sort it 树状数组 逆序对
Sort it Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU 2838 (DP+树状数组维护带权排序)
Reference: http://blog.csdn.net/me4546/article/details/6333225 题目链接: http://acm.hdu.edu.cn/showprobl ...
- hdu 4046 Panda 树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 When I wrote down this letter, you may have been ...
- hdu 5497 Inversion 树状数组 逆序对,单点修改
Inversion Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5497 ...
- HDU 5493 Queue 树状数组
Queue Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5493 Des ...
- POJ 2352 && HDU 1541 Stars (树状数组)
一開始想,总感觉是DP,但是最后什么都没想到.还暴力的交了一发. 然后開始写线段树,结果超时.感觉自己线段树的写法有问题.改天再写.先把树状数组的写法贴出来吧. ~~~~~~~~~~~~~~~~~~~ ...
- hdu 1541 (基本树状数组) Stars
题目http://acm.hdu.edu.cn/showproblem.php?pid=1541 n个星星的坐标,问在某个点左边(横坐标和纵坐标不大于该点)的点的个数有多少个,输出n行,每行有一个数字 ...
- hdu 5493 Queue 树状数组第K大或者二分
Queue Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- hdu 4031(树状数组+辅助数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4031 Attack Time Limit: 5000/3000 MS (Java/Others) ...
- Codeforces 216D Spider's Web 树状数组+模拟
题目链接:http://codeforces.com/problemset/problem/216/D 题意: 对于一个梯形区域,假设梯形左边的点数!=梯形右边的点数,那么这个梯形为红色.否则为绿色, ...
随机推荐
- jvm问题定位:cpu持续25%
某次代码提交后审核,观察应用CPU占用持续25%, 感觉应该是某个线程写的有问题, 在linux服务器上查看cpu却是正常 windows平台线程查看工具: Process Explorer, ...
- my22_mydumper 使用总结
1. mydumper 的安装依赖于mysql软件,要使用mydumper 则服务器上必须先安装mysql 2. mydumper 安装时会使用mysql软件的动态链接库文件,如果服务器上mysql版 ...
- 美团Linux运维工程师面试真题
1.LINUX系统软件安装和卸载的常见方法 答: A.rpm包卸载:rpm -e XXX.rpm (如果想忽略依赖,可加上–nodeps) B.yum remove xxx.rpm 这种方法非常 ...
- my.兽决_等_价格
1.20170411 音乐洒水车,升50级 送了 兽决 隐身,摆摊推荐价格 20000金,大家都卖26000金 2.20170417 音乐洒水车 挖到 必杀 魔决,推荐价格 19820金,我以 -10 ...
- Vim Plugins for Linux
Usage 1.Set up Vundle: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vi ...
- DRF之权限认证频率组建
认证组件 很久很久以前,Web站点只是作为浏览服务器资源(数据)和其他资源的工具,甚少有什么用户交互之类的烦人的事情需要处理,所以,Web站点的开发这根本不关心什么人在什么时候访问了什么资源,不需要记 ...
- MATLAB顺序结构程序和switch实现选择结构
数据操作 (1)数据输入: A=input(提示信息,选项) (2)数据输出: disp(输出项) (3)程序暂停 pause(延迟秒数)若无内容,则需用户按任意键继续 3.2if语句 整非零为真 矩 ...
- [PHP]生成随机数(建立字典)
代码如下 : //建立有76个字符组成的字典 $pattern='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$% ...
- pat1068. Find More Coins (30)
1068. Find More Coins (30) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Eva l ...
- intellijidea课程 intellijidea神器使用技巧1-4 idea安装
idea安装 run intellij idea==>finish ==>do not import settings==>ok==>evaluate for free==&g ...