xdu_1009: Josephus环的复仇(线段树)
题意不难理解,解法具体看代码及注释吧。。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
;
int n,k;
int ql,qr;
int pos; //当前要出队的人在剩余人中排在第几靠左的地方
struct node
{
int l,r;
int pre; //记录区间中剩余的最靠右的人在所有剩余人中的位置
int lz; //lazy标记
} a[maxn<<];
void push_up(int rt)
{
a[rt].pre=max(a[rt<<].pre,a[rt<<|].pre);
}
void build(int rt,int l,int r)
{
a[rt].l=l,a[rt].r=r;
if(l==r)
{
a[rt].pre=l;
return ;
}
;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
push_up(rt);
}
void update(int rt)
{
int l=a[rt].l,r=a[rt].r;
if(ql<=l&&r<=qr)
{
--a[rt].pre;
--a[rt].lz;
return ;
}
;
);
|);
push_up(rt);
}
void push_down(int rt)
{
int& lz=a[rt].lz;
) return ;
a[rt<<].lz+=lz;
a[rt<<|].lz+=lz;
a[rt<<].pre+=lz;
a[rt<<|].pre+=lz;
lz=;
}
int query(int rt)
{
int l=a[rt].l,r=a[rt].r;
if(l==r) return l;
push_down(rt);
;
].pre>=pos) );
|);
}
int main()
{
scanf("%d%d",&n,&k);
build(,,n);
int cnt=n;
pos=;
;i<n;i++)
{
pos=(pos-+k+cnt*)%cnt+; //当前位置变更
--cnt; //少了个人
); //出队人在原队伍中的位置
printf(? '\n':' ');
ql=p,qr=n; //出队后,pre发生变化的区间范围
update();
}
}
xdu_1009: Josephus环的复仇(线段树)的更多相关文章
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- HDU5957 Query on a graph(拓扑找环,BFS序,线段树更新,分类讨论)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5957 题意:D(u,v)是节点u和节点v之间的距离,S(u,v)是一系列满足D(u,x)<=k的点 ...
- POJ 2886 Who Gets the Most Candies?(线段树·约瑟夫环)
题意 n个人顺时针围成一圈玩约瑟夫游戏 每一个人手上有一个数val[i] 開始第k个人出队 若val[k] < 0 下一个出队的为在剩余的人中向右数 -val[k]个人 val[k ...
- cf1278D——树的性质+并查集+线段树/DFS判环
昨天晚上本来想认真打一场的,,结果陪女朋友去了.. 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的 ...
- 线段树求后继+环——cf1237D
/* 首先开三倍消环(两倍是不够的),倒序求值,线段树找一下后继即可 */ #include<bits/stdc++.h> using namespace std; #define N 3 ...
- hdu5643 King's Game(约瑟夫环+线段树)
Problem Description In order to remember history, King plans to play losephus problem in the parade ...
- 并查集+树链剖分+线段树 HDOJ 5458 Stability(稳定性)
题目链接 题意: 有n个点m条边的无向图,有环还有重边,a到b的稳定性的定义是有多少条边,单独删去会使a和b不连通.有两种操作: 1. 删去a到b的一条边 2. 询问a到b的稳定性 思路: 首先删边考 ...
- 【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)
3832: [Poi2014]Rally Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 168 Solved: ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
随机推荐
- Hadoop SSH+IP、SSH+别名 免密登录配置
1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...
- vue入门须知
1.vue基本结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...
- Azure 基础:Table storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table.其中的 Table 就是本文的主角 Azure Tabl ...
- 利用document的readyState去实现页面加载中的效果
打开新的网页时,为了增强友好性体验,告知用户网页正在加载数据需要呈现一个"页面加载中"之类的提示,只需要利用document就可以实现. 实现示例代码如下: <style&g ...
- Spring学习(13)--- 基于Java类的配置Bean 之 @Configuration & @Bean注解
基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置S ...
- ecshop支付方式含线下自提
用户展示页面模板所在:如ecshop/theme/default/flow.dwt 后台管理展示页面模板所在:如admin/templates/payment_list.htm ecshop 支付接口 ...
- String 类问题发现与解决
1.在代码中出现:String t = null; t.length(); 执行后:控制台报:java.lang.NullPointerException 原因:Java中,null是一个关键字,用来 ...
- SQL Server2012数据库的备份和还原
一.数据库的备份: 1.选择要备份的数据库“accountInfo”,点击鼠标右键 → 任务 → 备份 2.在打开的“备份数据库 —accountInfo”对话框中,先点击删除,然后点击“添加” 3. ...
- Paxos Made Simple(译)
The Paxos algorithm, when presented in plain English, is very simple. 我叫Leslie Lamport,我最屌. 1. 简介 用于 ...
- ecshop邮件订阅按“订阅”没反应
原订阅邮件所使用的JS文件transport.js和JQuery冲突,会更改transport.js文件,用以下代码可同样实现订阅功能. <input type="text" ...