题意:

在一个环形转盘上,第iii个物品将在Ti" role="presentation" style="position: relative;">TiTiT_i时刻出现。
那可以任选起点,每一个单位时间至多前进一格,问捡起所有物品最小时间。

题解:

显然有一种最优解是在某个时刻从某个点出发,一步不停的走一圈。
一波分析:

考虑枚举jjj,需要找最小满足条件的i" role="presentation" style="position: relative;">iii。也就是对于每一个jjj,找到最小i" role="presentation" style="position: relative;">iii的满足iii位置的后缀最大值为 xj" role="presentation" style="position: relative;">xjxjx_j,最后答案取minminmin。
于是就需要从后往前维护一个单调上升的栈,用类似楼房重建的方法。
值得一提的是,对于一段区间的答案,所用的ii<script type="math/tex" id="MathJax-Element-559">i</script>一定是要在左半边的,这样就可以合并了。
code:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,op;
int T[200010];
struct trnode{int lc,rc,mx,c;
}tr[400010];int tot=0;
inline int read()
{int p=0; int f=1; char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-') f=-1; ch=getchar();}while(ch>='0' && ch<='9'){p=p*10+ch-'0'; ch=getchar();}return p*f;
}
int findans(int x,int l,int r,int c)
{if(l==r) return tr[x].c=l+max(tr[x].mx,c);int mid=(l+r)/2;if(tr[tr[x].rc].mx>=c) return min(tr[x].c,findans(tr[x].rc,mid+1,r,c));return min(mid+1+c,findans(tr[x].lc,l,mid,c));
}
void update(int x,int l,int r)
{int mid=(l+r)/2;tr[x].c=(findans(tr[x].lc,l,mid,tr[tr[x].rc].mx));tr[x].mx=max(tr[tr[x].lc].mx,tr[tr[x].rc].mx);
}
void change(int x,int l,int r,int k)
{if(l==r) {tr[x].mx=T[l];tr[x].c=T[l]+l;return;}int mid=(l+r)/2;if(k<=mid) change(tr[x].lc,l,mid,k);else change(tr[x].rc,mid+1,r,k);update(x,l,r);
}
int bt(int l,int r)
{int x=++tot;if(l!=r){int mid=(l+r)/2;tr[x].lc=bt(l,mid);tr[x].rc=bt(mid+1,r);update(x,l,r);}else tr[x].mx=T[l],tr[x].c=T[l]+l;return x;
}
int main()
{scanf("%d %d %d",&n,&m,&op);for(int i=1;i<=n;i++) T[i]=T[i+n]=read(),T[i]-=i,T[i+n]-=i+n;bt(1,n<<1);int ans=0;printf("%d\n",ans=tr[1].c+n-1);while(m--){int x=read(),c=read();if(op) x^=ans,c^=ans;T[x]=T[x+n]=c;T[x]-=x;T[x+n]-=x+n;change(1,1,n<<1,x);change(1,1,n<<1,x+n);printf("%d\n",ans=tr[1].c+n-1);}
}

loj 2495. 「AHOI / HNOI2018」转盘相关推荐

  1. 「AHOI / HNOI2018」转盘 解题报告

    「AHOI / HNOI2018」转盘 可能是我语文水平不太行... 首先可以猜到一些事实,这个策略一定可以被一个式子表示出来,不然带修修改个锤子. 然后我们发现,可以枚举起点,然后直接往前走,如果要 ...

  2. loj #2509. 「AHOI / HNOI2018」排列

    #2509. 「AHOI / HNOI2018」排列 题目描述 给定 nnn 个整数 a1,a2,-,an(0≤ai≤n),以及 nnn 个整数 w1,w2,-,wn.称 a1,a2,-,an 的一个 ...

  3. 【扩展lucas】LOJ#2023. 「AHOI / HNOI2017」抛硬币

    Description 抛硬币,小A投 a a a次,小B投 b b b次,求小A正面次数多于小B正面次数的方案数. 1 ≤ a , b ≤ 1 e 15 , 0 ≤ a − b ≤ 1 e 4 , ...

  4. Loj #3124. 「CTS2019 | CTSC2019」氪金手游

    Loj #3124. 「CTS2019 | CTSC2019」氪金手游 题目描述 小刘同学是一个喜欢氪金手游的男孩子. 他最近迷上了一个新游戏,游戏的内容就是不断地抽卡.现在已知: - 卡池里总共有 ...

  5. LOJ#3054. 「HNOI 2019」鱼

    LOJ#3054. 「HNOI 2019」鱼 https://loj.ac/problem/3054 题意 平面上有n个点,问能组成几个六个点的鱼.(n<=1000) 分析 鱼题,劲啊. 容易想 ...

  6. 「AHOI / HNOI2017」影魔

    「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...

  7. LOJ 2288「THUWC 2017」大葱的神力

    LOJ 2288「THUWC 2017」大葱的神力 Link Solution 比较水的提交答案题了吧 第一个点爆搜 第二个点爆搜+剪枝,我的剪枝就是先算出 \(mx[i]\) 表示选取第 \(i \ ...

  8. LOJ 2979 「THUSCH 2017」换桌——多路增广费用流

    题目:https://loj.ac/problem/2979 原来的思路: 优化连边.一看就是同一个桌子相邻座位之间连边.相邻桌子对应座位之间连边. 每个座位向它所属的桌子连边.然后每个人建一个点,向 ...

  9. LOJ 3124 「CTS2019 | CTSC2019」氪金手游——概率+树形DP

    题目:https://loj.ac/problem/3124 看了题解:https://www.cnblogs.com/Itst/p/10883880.html 先考虑外向树. 考虑分母是 \( \s ...

最新文章

  1. 解决VS2015安装Android SDK 后文件不全及更新问题
  2. UWP入门(八)--几个简单的控件
  3. UIImage 图片处理:截图,缩放,设定大小,存储
  4. Java开发笔记(六十九)泛型类的定义及其运用
  5. SG2525_电压模式PWM——科时进商城
  6. 怎么拆分PDF文件?分享两种拆分文件的方法
  7. 汉字读音表GB2312版 (共7809个汉字)
  8. 亲测有效 debian出现does not have a Release file. N: Updating from such a repository can‘t be done securely
  9. 15分钟正则表达式快速上手(js)
  10. 自媒体如何多平台发文章?
  11. Vue 移动端调用相机和相册实现图片上传
  12. 21天减肥法反弹案例-987减肥网
  13. Kettle使用笔记
  14. python调整图片色相,对应ps的色相值
  15. c语言关键词中英翻译机编程,课程设计--C语言关键字中英翻译机
  16. 计算机黑屏故障产生的原因及处理方法,电脑出现间歇性黑屏现象的原因及解决方法...
  17. python图片分析中央气象台降水_Python气象绘图教程(十)
  18. NVIDIA Jetson TK1开发板
  19. win10环境安装使用svn客户端和服务端
  20. 单链表的实现与增删改查

热门文章

  1. 屏幕分享(演示手机投影到PC端)TotalControl
  2. 【5.12-5.13】实训Day-6Day-7记录
  3. iphone长截图哪个软件好_这可能是 iPhone 手机里最好用的长截图、拼图 APP。
  4. elementui 修改合计行样式 饿了么UI修改合计字体样式大小颜色
  5. 在百度云购买域名、阿里云购买服务器二者绑定过程
  6. Jedis源码解析(一):Jedis简介、Jedis模块源码解析
  7. C语言自学保姆教程——第一节--编译准备与第一个C程序
  8. 再深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP
  9. 计算机网络概论(不完整版,突然想随便写写)
  10. LTE中语音业务时怎样实现?