【模拟+线段树】 hdu4262 Juggler

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx 科技中介服务机构想要提升服务效率,需要哪些数智工具支持? 立即下载

Juggler

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4262

题意:有个数字圆环。三种操作:逆时针转一个,顺时针转一个,丢掉手中的那个的同时顺时针的数字到你的手里。每个操作都花费一秒。告诉你要求的出圈顺序,求最小花费时间。注:开始在手中的球为1.

题解:假设当前要移除的珠子为i,我们会发现无论左移还是右移都会得到同一个序列,即移去某个数字对后面的数字序列无影响,所以每次只需单独考虑左移和右移的长度,取最小累加即可。

代码:

#include<cstdio>
#include<cstring>
#include<list>
#include<algorithm>
using namespace std;
#define MAX 100005
#define ab(x) ((x)>0?(x):-(x))
int summ[MAX<<2];//区间内有几个数字
int pos[MAX];//询问顺序
void push_up(int idx)
{
    summ[idx]=summ[idx<<1]+summ[idx<<1|1];
    return;
}
void build(int l,int r,int idx)
{
    if(l==r)
    {
        summ[idx]=1;
        return;
    }
    int mid=(l+r)>>1;
    build(l,mid,idx<<1);
    build(mid+1,r,idx<<1|1);
    push_up(idx);
}
void update(int p,int l,int r,int idx)
{
    if(l==r)
    {
        summ[idx]=0;
        return;
    }
    int mid=(l+r)>>1;
    if(p<=mid) update(p,l,mid,idx<<1);
    else       update(p,mid+1,r,idx<<1|1);
    push_up(idx);
}
long long query(int a,int b,int l,int r,int idx)
{
    if(a<=l&&r<=b)
    {
        return summ[idx];
    }
    int mid=(l+r)>>1;
    long long ans=0;
    if(a<=mid) ans+=query(a,b,l,mid,idx<<1);
    if(mid<b)  ans+=query(a,b,mid+1,r,idx<<1|1);
    return ans;
}
int main()
{
    int n,a,c,d;
    for(; scanf("%d",&n),n;)
    {
        long long sumt=0,cnt;
        build(1,n,1);
        for(int i=1; i<=n; ++i)
        {
            scanf("%d",&a);
            pos[a]=i;
        }
        a=1;
        for(int i=1; i<=n; ++i)
        {
            sumt++;
            if(a!=pos[i])
            {
                if(a==1)
                    c=0;
                else
                    c=query(1,a-1,1,n,1);
                if(pos[i]==1)
                    d=0;
                else
                    d=query(1,pos[i]-1,1,n,1);
                cnt=ab(c-d);
                sumt+=min(cnt,n-i+1-cnt);
            }
            update(pos[i],1,n,1);
            a=pos[i];
        }
        printf("%I64d\n",sumt);
    }
    return 0;
}
来源: http://blog.youkuaiyun.com/acm_ted/article/details/7917889

usb 扩容盘检测修复工具源码,编译产物 立即下载

相关推荐

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 761

数据分析工具PlotJuggler使用小技巧

数据分析工具PlotJuggler

xiaohukuzai的博客 9482

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体

这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。

Aloudata的博客 1664

HDU 4262 Juggler (模拟+线段树优化)

转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526       by---cxlove http://acm.hdu.edu.cn/showproblem.php?pid=4262 题目:有一个圈,可以从某个位置取球,给出原有的顺序,有三种操作,左旋一次,右旋一次,取球,要求按顺序取球,问需要操作多少次

窝不是爱酱,喵~~~~ 1491

AWS RDS 介绍 三)创建 RDS 实例

AWS RDS 介绍 共分为 7 个部分, 其中 第 3部分重点介绍,如何创建一个RDS 实例。 三) AWS RDS 试用MySQL http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.

XuYongshi02的专栏 7646

hdu 4262 Juggler(树状数组)

题意:某人手上有一串珠子,顺时针编号1--n,每次可进行三种操作:顺时针旋转一个珠子,逆时针旋转一个珠子,将手中的珠子移去(移去后顺时针方向下一个珠子进入手中),问按标号12345顺序将所有珠子逐一移去,最少需要多少次操作。 分析:假设当前要移除的珠子为x,x左边的珠子用A代表,右边的珠子用B代表即AxB,则无论左移还是右移都会得到xBA,即移去某个珠子对后面的珠子无影响,每次只需单独考虑A和B

新博客地址:sensirly.github.io 854

【WRF运行报错】总结WRF运行时报错及解决方案(持续更新)

总结WRF运行时报错及解决方案(持续更新)

WW、forever的博客 1633

HDU 4262 Juggler(线段树)

2012 ACM/ICPC Asia Regional Online Warmup 1006题 #include #include #include #include #include using namespace std; const int maxn = 100010; int sum[maxn<<2]; int pos[maxn]; int n; void bui

~飞呀,飞~ 1046

通信算法之325:无人机云哨协议及发射机接收机仿真算法

【代码】通信算法之325:无人机云哨物理层协议及发射机接收机仿真代码。

leegang12的专栏 363

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

HDU 4262

线段树记录区间中已取走的个数 #include #include #include #define N 100100 using namespace std; int n; int now; long long ans; int a[N],pos[N]; struct Tree{ int l,r,num; }tree[N*3]; void build(int s,int t,int id

1292765944的专栏 793

python读取并可视化npy格式的深度图文件以及将其保存为jpg图片的方法

  npy文件是无法直接打开的,它里面包含的是一个矩阵格式的数据,可以用于存储图像。为了对其进行可视化,需要将其转换为图像。这里需要用到numpy包以及matplotlib包,没有的话就pip install一下吧。现进入包含有npy文件的目录(我的该目录下有一个名为0000.npy的文件),然后打开一个终端,执行python进入pythn命令行模式,依次输入如下代码即可: import numpy as np import matplotlib.pyplot as plt depthmap = np.lo

zeeq的博客 5万+

HDU 4262 Juggler

点我看题 初步想法是模拟,找到下一个位置并记录操作数,O(n^2)肯定会超时。 那么进行优化,会发现到下一位置的操作数就是两个位置之间存在的数的个数,于是就变成了计数问题。 不难想到用树状数组或线段树进行计数,时间复杂度O(nlogn)。 1 #include<cstdio> 2 #include<algorithm> 3 #include&...

dianan9456的博客 115

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU4262 Juggler 线段树

warm up的第六题,当时就看出来是线段树了,只是因为一些细节问题,没有A掉,做题目的时候心浮气躁。看来要走的路还很长。 这题目有三种动作让我们选择 1:顺时针移动一格 2:逆时针移动一格 3:把第一个球丢掉。 问我们最少多少个动作把球从小到大丢掉。这题的数据量很大,我想到了查询从当前要丢掉的球的位置顺时针到第一个球和逆时针到第一个球所在的位置上还剩余多少个球,来求出最少的动作。(这里的第一

645

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ros 数据可视化

There are many tools to plot. - rqt_plot rosrun rqt_plot rqt_plot - rqt_multiplot (from ethz) tool is quite nice to use (compared to rqt_plot) rosrun rqt_multiplot rqt_multiplot -plot_juggler t...

BetterEthan的博客 1140

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu 4262 Juggler 这题真是跟小丑一般。。。

题意:        有个球的圈圈。三种操作:逆时针转一个,顺时针转一个,丢掉手中的那个的同时顺时针的球到你的手里。每个操作都花费一秒。告诉你要求的出圈顺序,求最小花费时间。注:开始在手中的球为1. 解:       线段树和树状数组都可。树状数组很蛋疼。建议我以后用线段树。开始为什么不用线段树是因为怕自己搞不出相对坐标和绝对坐标。凡是二分的树状数组能不写就不写。 这个是用set代替二分的

Julyana_Lin_夜 741

hdu 4262 线段树优化

#include #include #include #include using namespace std; #define lson u<<1 #define rson u<<1|1 #define MAXN 100005 int map[MAXN]; struct Node{ int lef,rig; int sum; }T[MAXN<<2]; void PushUp(int

qingniaofy的专栏 872

【线段树】 hdu1698 Just a Hook

Just a Hook http://acm.hdu.edu.cn/showproblem.php?pid=1698 Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is

Ted's 游乐园 2283

【DP+线段树】 hdu3698 Let the light guide us

Let the light guide us http://acm.hdu.edu.cn/showproblem.php?pid=3698 Problem Description Plain of despair was once an ancient battlefield where those brave spirits had rested in peace for

Ted's 游乐园 1737

【线段树】 hdu3954 Level up

Level up http://acm.hdu.edu.cn/showproblem.php?pid=3954 Problem Description Level up is the task of all online games. It's very boooooooooring. There is only level up in those games, except

Ted's 游乐园 1520

【线段树】 hdu1166 敌兵布阵

敌兵布阵 http://acm.hdu.edu.cn/showproblem.php?pid=1166 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以

Ted's 游乐园 976

【线段树】 hdu4325 Flowers

Flowers http://acm.hdu.edu.cn/showproblem.php?pid=4325 Problem Description As is known to all, the blooming time and duration varies between different kinds of flowers. Now there is a gar

Ted's 游乐园 906

【线段树】 hdu4107 Gangster

Gangster http://acm.hdu.edu.cn/showproblem.php?pid=4107 Problem Description There are two groups of gangsters fighting with each other. The first group stands in a line, but the other gro

Ted's 游乐园 710

【线段树】 hdu1754 I Hate It

I Hate It http://acm.hdu.edu.cn/showproblem.php?pid=1754 Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新

Ted's 游乐园 587
上一篇: ZOJ Monthly, August 2012
下一篇: Codeforces Round #135 (Div. 2)
ACM_Ted
博客等级 码龄15年 122粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值