博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2886 Who Gets the Most Candies?(线段树)
阅读量:5319 次
发布时间:2019-06-14

本文共 2028 字,大约阅读时间需要 6 分钟。

题目大意:N个人围成一圈玩约瑟夫环游戏,不同的是。步长不固定,由前一个出局的人决定。给定K表示起始的人。

第i个淘汰的人将获得g(i)个糖果,问说谁获得的糖果最多。

g(x)为x的因子个数。

解题思路:起始g(x)是成阶段的,所以打表处理处g(x)递增值,对于每一个N,一開始找到小于等于N的最大x,那么第x个淘汰的人即为获得糖果数最多的家伙。剩下的就用线段树模拟游戏过程。

#include 
#include
#include
using namespace std;const int maxn = 500005;#define lson(x) ((x)<<1)#define rson(x) (((x)<<1)+1)struct Node { int l, r, s; void set (int l, int r, int s) { this->l = l; this->r = r; this->s = s; }}nd[maxn * 4];const int antipri[36] = {
1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,5040,7560,10080,15120,20160,25200,27720,45360,50400,55440,83160,110880,166320,221760,277200,332640,498960,500001};const int fact[36] = {
1,2,3,4,6,8,9,10,12,16,18,20,24,30,32,36,40,48,60,64,72,80,84,90,96,100,108,120,128,144,160,168,180,192,200};int N, B, v[maxn];char name[maxn][20];void build (int u, int l, int r) { nd[u].set(l, r, r - l + 1); if (l == r) return ; int mid = (l + r) / 2; build(lson(u), l, mid); build(rson(u), mid + 1, r);}int query(int u, int x) { nd[u].s--; if (nd[u].l == nd[u].r) return nd[u].l; if (nd[lson(u)].s >= x) return query(lson(u), x); else return query(rson(u), x - nd[lson(u)].s);}int bsearch (int x) { int l = 0, r = 35; for (int i = 0; i < 20; i++) { int mid = (l + r) / 2; if (antipri[mid] > x) r = mid; else l = mid; } return l;}int main () { while (scanf("%d%d", &N, &B) == 2) { for (int i = 1; i <= N; i++) scanf("%s%d", name[i], &v[i]); build(1, 1, N); v[0] = 0; int E = bsearch(N), k = 0; for (int i = N; i; i--) { B = ((B + v[k] - (v[k] > 0 ? 2 : 1)) % i + i) % i + 1; k = query(1, B); if (N - i + 1 == antipri[E]) { printf("%s %d\n", name[k], fact[E]); break; } } } return 0;}

转载于:https://www.cnblogs.com/zfyouxi/p/5159854.html

你可能感兴趣的文章
VBoxManage命令速记
查看>>
(转载)我们工作到底为了什么 (HP大中华区总裁孙振耀退休感言)
查看>>
phpstudy + dvws
查看>>
2016/3/10 数据库简单操作( 创建数据库 创建表 数值类型 主键 外键 自动递增 )...
查看>>
Redis客户端连接池问题
查看>>
linux C print
查看>>
Mac-Navicat Premium For Mac 12 破解 - [数据库可视化工具,亲测完美破解]
查看>>
利用Chrome查看网页渲染机制
查看>>
第5章 初始化与清理
查看>>
委托与事件
查看>>
MVC实战之排球计分(七)——软件的具体实现与测试
查看>>
maven的pom.xml文件标签含义
查看>>
arXiv网站
查看>>
YII 开启URL伪静态
查看>>
关于ControlTemplate 1
查看>>
关于Mysql注入过程中的三种报错方式(转)
查看>>
『实践』Yalmip建模+Cplex类求解
查看>>
课程作业04-字串加密解密
查看>>
用ATL创建COM组件详细解说
查看>>
计数排序
查看>>