题目:有一个圈,可以从某个位置取球,给出原有的顺序,有三种操作,左旋一次,右旋一次,取球,要求按顺序取球,问需要操作多少次

显然操作是确定的,每次将目标球旋转过来,找出左旋和右旋操作少的,然后取球。

每次旋转后相对距离不变,每次记录某个区间删掉了多少,就可以查询了。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
#define lson l, m, rt<<1
#define rson m + 1, r, rt<<1|1
typedef long long ll;
const int maxn = 1e5 + ;
int n, pos[maxn], sum[maxn << ];
ll ans;
void update(int p, int l, int r, int rt){
sum[rt]++;
if (l == r) return;
int m = (l + r) >> ;
if (p <= m) update(p, lson);
else update(p, rson);
}
int query(int L, int R, int l, int r, int rt){
if (L > R) return ;
if (L <= l && R >= r){
return sum[rt];
}
int m = (l + r) >> ;
int ret = ;
if (L <= m) ret += query(L, R, lson);
if (R > m) ret += query(L, R, rson);
return ret;
}
int main(){
int x;
while (~scanf("%d", &n) && n){
ans = ;
memset(sum, , sizeof(sum));
for (int i = ; i < n; ++i){
scanf("%d", &x);
pos[x] = i + ;
}
int pre = , q, c, lx, rx;
for (int i = ; i <= n; ++i){
x = pos[i];
if (x > pre){
q = query(pre + , x, , n, );
lx = x - pre - - q;
rx = n - i + - lx;
}
else{
q = query(x + , pre - , , n, );
rx = pre - x - q;
lx = n - i + - rx;
}
//cout << " lx = " << lx << " rx = " << rx << endl;
//int lx = x - 1 - query(1, x - 1, 1, n, 1);
//int rx = n - x + 1 - query(x + 1, n, 1, n, 1);
ans += min(lx, rx) + ;
pre = x;
update(x, , n, );
}
printf("%lld\n", ans);
}
return ;
}

hdu 4262(线段树)的更多相关文章

  1. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  2. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. hdu 3436 线段树 一顿操作

    Queue-jumpers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. hdu 3397 线段树双标记

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  5. hdu 4578 线段树(标记处理)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others) ...

  6. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  7. hdu 2871 线段树(各种操作)

    Memory Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. hdu 1542 线段树扫描(面积)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

随机推荐

  1. Agent是什么

    广义的Agent包括人类.物理世界的机器人和信息世界的软件机器人. 狭义的Agent专指信息世界中的软件机器人或称软件Agent. 1) 弱定义 Agent用来最一般地说明一个软硬件系统,具有四个特性 ...

  2. LogManager

    public class LogManager { // Fields public static bool Debugstate; // Methods public static void Log ...

  3. XML之Schema

    前面学习了DTD.相同我们有了一套更完好的定义法则-Schema. 以下环绕Schema是什么.为何用以及怎么用谈谈自己的感受. XML Schema是基于XML的DTD替代者. XML Schema ...

  4. Docker的Jenkins Pipeline工作流

    原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...

  5. node.js 学习02

    读写文件中的路径问题 readFile()读取文件函数中的./(相对路径)这个参数,相对的是执行node命令的路径,而不是相对于正在执行的这个js文件来查找.为了解决这个问题: __dirname(两 ...

  6. Python pip install Twisted 出错“Command "c:\python37\python.exe -u -c "import setuptools, tokenize;__file__='C:...\\Twisted\\setup.py'.... failed with error code 1 in C:... \\Twisted"

    如标题所说: python版本是目前最新的3.7.1 结果发现并不是环境问题,而是直接 pip install Twisted 安装的包不兼容 需要手动下载兼容的扩展包Twisted-18.9.0-c ...

  7. 趣味 console.log

    第三方趣味console,比我的强太多了,使用这个吧: https://github.com/yy0608/console 我的console效果图: ;(function (global, fact ...

  8. linux proc目录和常用操作

    ------------------------------------------------/proc----------------------------------------------- ...

  9. MII_GMII_RGMII_RMII_SMII_SSMII_TBI_RTBI

    简介 MII是英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有 ...

  10. varnish学习笔记

    varnish cache是一款开源的高性能的缓存server.和老牌的Squid对照有例如以下长处. 1:varnish是基于内存缓存数据的,所以处理速度比Squid要快. 2:varnish支持更 ...