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 ...
随机推荐
- 警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JsonBlog' did not find a matching property.
这个问题困扰很久了,逛了很多论坛,终于得以解决 我的控制台错误如下: 五月 , :: 下午 org.apache.catalina.startup.VersionLoggerListener log ...
- IT学习网站
网站 网站定位 http://www.51cto.com/ 中国领先的IT技术网站. http://www.iteye.com/ 内容齐全,功能丰富的中文IT技术门户和社区网站. http://www ...
- PHP中小小的header函数
不废话,直接说功能 1.重定向,语法: header("location:http://www.lemon-x.ga"); file_put_contents("./te ...
- 【LeetCode】67. Add Binary
题目: Given two binary strings, return their sum (also a binary string). For example,a = "11" ...
- JAVA基础——方法笔记
java方法_学习笔记 由于我本人对java方法已经比较熟悉了,java方法的定义和使用也比较简单,这里只列举了基于我自身容易搞错的地方,希望对大家的学习有帮助!! 方法的参数可以是基本数据类型,如 ...
- Spring Security-自定义配置Filter
自定义配置Filter 一.最基础的配置 SecurityContextPersistenceFilter 用来建立 SecurityContext,而它被用来贯穿整个 request 过程以跟踪请求 ...
- Sublime Text 3 注册码
最近觉得Sublime Text3比Notepad++好使,可惜需要购买,于是网上搜了一下,屌丝的福音啊: Sublime Text Build 3065 License key复制如下三个任意一个正 ...
- Vijos 1007 绕钉子的长绳子
背景 平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形. 现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计. 描述 求出绳子的长度 格式 输入格式 第1行两个数:整数N(1< ...
- jQuery UI 日期选择器(Datepicker)
设置JqueryUI DatePicker默认语言为中文 <!doctype html><html lang="en"> <head> < ...
- Chrome浏览器扩展开发系列之十三:消息传递Message
由于content scripts运行在Web页面的上下文中,属于Web页面的组成部分,而不是Google Chrome扩展程序.但是content scripts又往往需要与Google Chrom ...