「模拟8.23」one递推,约瑟夫
这样大概就是板子问题了
考场的树状数组+二分的60分暴力???
1 #include<bits/stdc++.h>
2 #define int long long
3 #define MAXN 11000001
4 int c[MAXN];
5 int lowbit(int x){return x&(-x);}int n;
6 void add(int x,int k)
7 {
8 for(int i=x;i<=n;i+=lowbit(i))
9 {
10 c[i]+=k;
11 }
12 }
13 int query(int x)
14 {
15 int ans=0;
16 for(int i=x;i>=1;i-=lowbit(i))ans+=c[i];
17 return ans;
18 }
19 int second_divied(int l,int r,int x,int last_rs)
20 {
21
22 while(l+1<r)
23 {
24 int mid=(l+r)>>1;
25 if(query(mid)-last_rs<x)
26 {
27 l=mid;
28 }
29 else r=mid;
30 //printf("l=%lld r=%lld\n",l,r);
31 }
32 if(query(l)-last_rs==x)return l;
33 else return r;
34 }
35 int find(int pos)
36 {
37 if(query(n)-query(pos)==0)
38 {
39 return 1ll;
40 }
41 return pos;
42 }int ans=0;
43 void work2()
44 {
45 for(int i=1;i<=n;++i)add(i,1);
46 int sum=0;int pos=0;int cir=1;//上一位置
47 while(sum<n-1)
48 {
49 int now_rs=query(n);
50 int last_rs=query(pos);
51 if(now_rs-last_rs>=cir)
52 {
53 pos=second_divied(pos+1,n,cir,last_rs);
54 add(pos,-1);
55 pos=find(pos);
56 }
57 else if(now_rs-last_rs<cir)
58 {
59 int t=query(n);
60 int me=cir;
61 me=(me-(now_rs-last_rs))%t;
62 if(me==0)me=t;
63 pos=second_divied(1,n,me,0);
64 add(pos,-1);
65 pos=find(pos);
66 }
67 cir++;sum++;
68 }
69 ans=second_divied(1,n,1,0);
70 add(ans,-1);
71 }
72 int T=0;
73 signed main()
74 {
75 scanf("%lld",&T);
76 while(T--)
77 {
78 scanf("%lld",&n);
79 ans=0;
80 work2();
81 printf("%lld\n",ans);
82 }
83 }
对于约瑟夫问题
我们可以知道最后的人一定是升到最后的,他在新的队伍里的编号是零(因为只有一个人,从零开始编号)
然后我们从后往前递推,考虑最后胜利者在上一层的编号直到最后编号
我们假设当前层为4,编号为3
那么在上一层时因为干掉了一个人,那么就从干掉的人的后一个开始编号
所以上一层是在位置6
这样我们得到f[i]表示在第i次操作后胜利者所处的编号
然后就简单了
#include<bits/stdc++.h>
#define MAXN 10000001
using namespace std;
int T;int n;int ans=0;
signed main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
ans=0;
for(int i=n-1;i>=1;--i)
{
ans=(ans+i)%(n-i+1);
}
printf("%d\n",ans+1);
}
}
「模拟8.23」one递推,约瑟夫的更多相关文章
- 「模拟8.23」阴阳 DP
对于此题的性质我们考虑DP 分四种情况 黑色块在右侧单调降,单调升 还有在左侧 另外我们这样可能会记重,所以还要将重复记过的也就是边界线是横的和竖的 然后还要将全白全黑加上 1 #include< ...
- 「LOJ 538」「LibreOJ NOIP Round #1」数列递推
description sosusosu 虐爆 OI 之后成为了一名文化课选手.一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式: 给定一个下标从\(0\)开始,无限长的整数列\({a_ ...
- [wikioi 1418]铃仙•优昙华院稻叶(东方幻想乡系列模拟赛)(树上递推)
题目:http://www.wikioi.com/problem/1418/ 分析: 一看就肯定是树上的递推 设f[i][j][k]表示第i秒在k点(从j点走过来的)的概率 则f[i][j][k]=f ...
- 【LibreOJ】#538. 「LibreOJ NOIP Round #1」数列递推
[题意]LibreOJ [算法]乱搞 [题解]容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列 ...
- 「模拟赛20191019」C 推式子+贪心+树状数组
题目描述 给定一棵\(n\)个点的有根树,根节点编号为\(1\),点有点权. 定义\(d(v)\)表示\(v\)到\(1\)的路径上的边数. 定义\(f(v,u)\)在\(v<u\)且\(v\) ...
- 2021升级版微服务教程5—通过IDEA运行多个项目实例「模拟集群」
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...
- 「模拟赛20190327」 第二题 DP+决策单调性优化
题目描述 小火车虽然很穷,但是他还是得送礼物给妹子,所以他前往了二次元寻找不需要钱的礼物. 小火车准备玩玩二次元的游戏,游戏当然是在一个二维网格中展开的,网格大小是\(n\times m\)的,某些格 ...
- 「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组
题目描述 回忆树是一棵树,树边上有小写字母. 一次回忆是这样的:你想起过往,触及心底--唔,不对,我们要说题目. 这题中我们认为回忆是这样的:给定 \(2\) 个点 \(u,v\) (\(u\) 可能 ...
- 「模拟8.29」chinese(性质)·physics·chemistry(概率期望)
T1 chinese 根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和 我们可以转变问题,每个点在所有方案的贡献 进而其实询问就是1-k的取值,有多少中方案再取个和 ...
随机推荐
- python中的xlrd模块学习
1.xlrd模块主要用于excel表格的读取,支持xlsx和xls:xlwt主要用于excel的写,库的读取 2.常用单元格中的数据类型 0.empty(空的):1.string(text):2.nu ...
- SwiftUI 简明教程之自定义 Modifier
本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容. Eul 是一款 SwiftUI & Combine 教程 App(iOS.macOS),以文章(文字.图片. ...
- Python 基础教程 —— Pandas 库常用方法实例说明
目录 1. 常用方法 pandas.Series 2. pandas.DataFrame ([data],[index]) 根据行建立数据 3. pandas.DataFrame ({dic}) ...
- Pytorch_Part6_正则化
VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...
- mysql知识点归纳-执行计划篇
愿历尽千帆,归来仍是少年 缘由: 优化sql,顾此记录一下,以便温习之用. 前置: sql执行过程:客户端 -> 连接器 -> 分析器 (或查询缓存 - > end) -> 优 ...
- [bug] Flask:jinja2.exceptions.UndefinedError: 'None' has no attribute 'id'
问题 Python Flask做的购物网站,添加购物车时,提示错误 解决 检查发现是MySQL中不正常的空数据导致,删除此条记录即可 参考 https://www.jb51.cc/python/186 ...
- KVM性能优化
一.KVM为什么要调优 性能的损耗是关键.KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化.KVM性能优化主要在CPU.内存.I/O这几方面.当然对于 ...
- linux进阶之nmtui和nmcli配置网络
CentOS7配置网络推荐使用NetworkManager服务(不推荐network服务). 图形化方式:nmtui或Applications->System Tools->Setting ...
- Boostrap bootstrap-table插件使用教程
bootstrap table 简介及特性 简介 Bootstrap table 是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序 ...
- Python使用 Kubernetes API 访问集群
通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样:使用 grep/cut 方式: 通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理, ...