LightOJ-1097-线段树
来源:互联网 发布:嘀哩嘀哩下载下载软件 编辑:程序博客网 时间:2024/06/03 08:51
题目大意:有一个奇数组成的数列,每次选第i个元素,从val[i]到最后删除,每次下标加上val[i]-1;
题目解析:用线段树暴力更新预处理;
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;typedef long long ll;const int maxn=1429431;int val[maxn*3];void pushup(int rt){val[rt]=val[rt<<1]+val[rt<<1|1];}void build(int l,int r,int rt){if(l==r){if(l%2==1)val[rt]=1;else val[rt]=0;return ;}int m=(l+r)>>1;build(lson);build(rson);pushup(rt);}void update(int pos,int l,int r,int rt){if(l==r){val[rt]=0;return ;}int m=(l+r)>>1;if(pos<=val[rt<<1])update(pos,lson);else update(pos-val[rt<<1],rson);pushup(rt);}ll query(int pos,int l,int r,int rt){if(l==r)return l;int m=(l+r)>>1;if(pos<=val[rt<<1])return query(pos,lson);else return query(pos-val[rt<<1],rson);}void solve(){int i,j,temp;build(1,maxn,1);for(i=2;i<=val[1];i++){temp=query(i,1,maxn,1);//cout<<temp<<" "<<val[1]<<endl;for(j=temp;j<=val[1];j+=(temp-1)){update(j,1,maxn,1);}}}int main(){int cas,c;solve();scanf("%d",&cas);for(c=1;c<=cas;c++){ll n;scanf("%lld",&n);printf("Case %d: %lld\n",c,query(n,1,maxn,1));}return 0;}
0 0
- LightOJ-1097-线段树
- LightOJ 1097 - Lucky Number(线段树)
- LightOJ-2991-线段树
- LightOJ-1087-线段树
- LightOJ-1093-线段树
- LightOJ-1083-线段树
- [线段树]LightOJ 1093 - Ghajini
- LightOj 1081 二维线段树
- lightoj 1339 Strongest Community 线段树
- lightoj 1164 - Horrible Queries 线段树入门
- lightoj 1081 - Square Queries 【二维线段树】
- lightoj 1089 【离散化+线段树】
- LightOJ-1089-线段树,离散化
- lightOj 1164 Horrible Queries (线段树)
- LightOJ 1097 - Lucky Number [线段树二分前缀和构造数列]
- [线段树|平衡树|树状数组]LightOJ - 1087 - Diablo
- [线段树+区间染色]LightOJ 1207 Posters for Election
- [离散化+扫描线+线段树]LightOJ 1120 - Rectangle Union
- SpringMVC中的主要注解及介绍
- android 教你如何判断是否是模拟器还是真机
- yii2.0使用ActionForm创建表单
- 移植madplay 很好用用的播放器工具
- python开始抱vs2015的大腿??
- LightOJ-1097-线段树
- 利用射线 Camora智能追随目标
- 如何学习困难学科和实用思维方法
- 高斯消元法求线性方程组
- 从头创建一个基于react,webpack,babel的项目
- 差异增量备份和累积增量备份
- Ignite+CDH5.8安装配置
- 判断二维线段相交
- servlet中service() doGet() doPost() 方法