Description

假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N。由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底。为了发完所有的牌,荷官会进行N次发牌操作,在第i次发牌之前,他会连续进行R_i次销牌操作,R_i由输入给定。请问最后玩家拿到这副牌的顺序是什么样的?

举个例子,假设N = 4,则一开始的时候,牌库中牌的构成顺序为{1, 2, 3, 4}。

假设R1=2,则荷官应该连销两次牌,将1和2放入牌库底,再将3发给玩家。目前牌库中的牌顺序为{4, 1, 2}。

假设R2=0,荷官不需要销牌,直接将4发给玩家,目前牌库中的牌顺序为{1,2}。

假设R3=3,则荷官依次销去了1, 2, 1,再将2发给了玩家。目前牌库仅剩下一张牌1。

假设R4=2,荷官在重复销去两次1之后,还是将1发给了玩家,这是因为1是牌库中唯一的一张牌。

Input

第1行,一个整数N,表示牌的数量。第2行到第N + 1行,在第i + 1行,有一个整数R_i, 0≤R_i<N

Output

第1行到第N行:第i行只有一个整数,表示玩家收到的第i张牌的编号。

Sample Input

4
2
0
3
2

Sample Output

3
4
2
1

HINT

N<=70万

Solution

提供一个跑的贼慢的做法

在树状数组上二分

复杂度$O(nlognlogn)$

和权值线段树差不多的思路,但是好写啊

#include <bits/stdc++.h>

using namespace std ;

inline int lowbit( int x ) {
return x & -x ;
} #define N 700010 int n ;
int c[ N ] ; void add( int x , int val ) {
for( int i = x ; i <= n ; i += lowbit( i ) )
c[ i ] += val ;
} int query( int x ) {
int ans = ;
for( int i = x ; i ; i -= lowbit( i ) ) ans += c[ i ] ;
return ans ;
} int find( int x ) {
int l = , len = n ;
while( len ) {
int mid = l +( len >> ) ;
if( query( mid ) < x ) {
l = mid + ;
len = len - ( len >> | ) ;
} else len = len >> ;
}
return l ;
} int main() {
int now = ;
scanf( "%d" , &n ) ;
for( int i = ; i <= n ; i ++ ) add( i , ) ;
for( int i = ; i <= n ; i ++ ) {
int t ;
scanf( "%d" , &t ) ;
t = t % ( n - i + ) ;
now = ( now + t ) % ( n - i + ) ;
t = find( now + ) ;
printf( "%d\n" , t ) ;
add( t , - ) ;
}
return ;
}

最新文章

  1. iOS事件传递-&gt;处理-&gt;响应
  2. ASP.NET Core Docker部署
  3. EventBus3.0源码解析
  4. CFgym Board Queries (旋转、翻转简化)
  5. Dynamics AX 2012 R2 为运行失败的批处理任务设置预警
  6. 优秀c++开源项目集合
  7. 開賣!下集 -- ASP.NET 4.5 專題實務(II)-範例應用與 4.5新功能【VB/C# 雙語法】
  8. 201521123036 《Java程序设计》第8周学习总结
  9. 通用table样式
  10. 好代码是管出来的——Git的分支工作流与Pull Request
  11. Client-Side Template Injection with AngularJS
  12. guxh的python笔记二:函数基础
  13. 日期在Linux与Windows下的区别
  14. 【转】Unity网格合并_材质合并
  15. HTML文件默认内容
  16. Fragment 实现拍照,相册选图,设置头像功能
  17. 树莓派 安装 刷Android Things 小结
  18. spring mvc 数据回显
  19. 20155212 实验二 Java面向对象程序设计
  20. 深度增强学习--DPPO

热门文章

  1. android 本地字符串存取
  2. LeetCode-MinimumDepthOfBinaryTree
  3. bind,live,delegate
  4. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON LocalMin1
  5. Linux基础命令---mktemp
  6. Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!
  7. Qt学习之路(45): 自定义model之一
  8. 2016NOI冬令营day2
  9. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
  10. 业余时间正在开发一个REACT小视频站点