Death Sequence HDU
来源:互联网 发布:音频裁切软件 编辑:程序博客网 时间:2024/05/17 01:25
用线段树去模拟,开始每点的值为1,单点查询相对位置,然后用vis数组记录结果,将该点的值置0。
比如,我查第一个删除的点的相对位置为1,然后线段树找了了val[i]=1的位置,然后将该点置为0,删除下一个点的时候,相对位置就是k+1-1(因为前面已经删了一个了),然后用线段树找,再下一个点的时候相对位置就是k*2+1-2;
然后如果相对位置temp小于等于左边的val,就往左走,否则就往右走,temp=temp-val[i<<1];
时间复杂度为 : O(nlogn)
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn = 3000000+10;int vis[maxn];int val[maxn<<2];void build(int i,int l,int r){ val[i]=0; if(l==r) { val[i]=1; vis[l]=0; return ; } int mid=(l+r)>>1; build(i<<1,l,mid); build(i<<1|1,mid+1,r); val[i]=val[i<<1]+val[i<<1|1];}int h=1;void sert(int i,int l,int r,int temp){ if(l==r) { vis[h++]=l; val[i]=0; return ; } int mid=(l+r)>>1; if(temp<=val[i<<1]) sert(i<<1,l,mid,temp); else { sert(i<<1|1,mid+1,r,temp-val[i<<1]); } val[i]=val[i<<1]+val[i<<1|1];}int main(){ // freopen("E:\\input.txt","r",stdin); int T; scanf("%d",&T); while(T--) { memset(vis,0,sizeof(vis)); memset(val,0,sizeof(val)); int n,k,q; scanf("%d %d %d",&n,&k,&q); build(1,1,n); int i=0,t=0,num=n; h=1; while(num) { int temp=k*i+1-t; if(temp<=num) { sert(1,1,n,temp); i++; t++; num--; } else { i=0; t=0; } } while(q--) { int a; scanf("%d",&a); printf("%d\n",vis[a]); } } return 0;}
阅读全文
0 0
- HDU 5860 Death Sequence
- HDU 5860 Death Sequence
- Death Sequence HDU
- HDU 5860 Death Sequence(递推)
- HDU 5860 Death Sequence(递推)
- 2016多校10 HDU 5860 Death Sequence
- HDU 5860 Death Sequence(dp)
- HDU 5860 Death Sequence(递推)
- HDU 5860 Death Sequence(DP+约瑟夫问题·改)
- HDU 5860 Death Sequence (DP 递推)
- hdu5860 Death Sequence
- HDOJ 5860 Death Sequence
- Hdu5860 Death Sequence
- hdu5860 Death Sequence
- HDU5860-Death Sequence
- hdu 5860 Death Sequence(2016 Multi-University Training Contest 10——递推)
- Death Podracing HDU
- HDU 5860 Death Sequence (递推 + 约瑟夫环 + 思维)——2016 Multi-University Training Contest 10
- 机器学习文章资料汇总
- 推荐系统-协同过滤简单介绍
- XYNU OJ 1000—1009基础题(适合于C语言初学者)
- Android Studio 使用JNI库
- JavaEE 三层结构
- Death Sequence HDU
- 解惑-1 关于透传与透传参数
- HDU 1693 Eat the Trees(轮廓线DP)
- laravel使用支付宝、微信、qq、微博三方登录
- 工厂模式解决如何不通过new来创建实例对象的方法
- iOS-ARC与MRC混编
- react native 缓存
- 身份定义巩固企业安全体系中的薄弱环节
- iOS组件化方案的几种实现