Who Gets the Most Candies? POJ - 2886 (线段树)

按顺时针给出n个小孩,n个小孩每个人都有一个纸,然后每个人都有一个val,这个val等于自己的因子数,如果这个val是正的,那就顺时针的第val个孩子出去,如果是负的话,就逆时针的第val个孩子出去,所以可以用线段树维护一个区间内的孩子数,然后找到下一个孩子是这些人里的第k个人,用线段树找到剩下的第k个人的位置,然后把这个地方更新成0,这样模拟过程.

反素数:反素数就是从区间1 - i 内的数的因子数都比 i 的因子数少的数,这题中因为同样的val值时选择出队早的人,其实就是1-n内的最大反素数m,就说明是第m个人的因子数是最大的,然后我只需要模拟前m次就可以了

#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<stack>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define first fi
#define second se
#define lowbit(x) (x & (-x))typedef unsigned long long int ull;
typedef long long int ll;
const double pi = 4.0*atan(1.0);
const int inf = 0x3f3f3f3f;
const int maxn = 500005;
const int maxm = 305;
using namespace std;int n, m, tol, T;
struct Node {char name[15];int k;
};
Node node[maxn];
int sum[maxn << 2];
int RPrime[]= {0,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,554400
};int fact[]= {0,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,216
};void pushup(int root) {sum[root] = sum[root << 1] + sum[root << 1 | 1];
}void build(int left, int right, int root) {if(left == right) {sum[root] = 1;return ;}int mid = (left +right) >> 1;build(left, mid, root << 1);build(mid+1, right, root << 1 | 1);pushup(root);
}int update(int left, int right, int k, int root) {if(left == right) {sum[root]--;return left;}int mid = (left + right) >> 1;int ans;if(sum[root << 1] >= k)    ans = update(left, mid, k, root << 1);else    ans = update(mid+1, right, k-sum[root << 1], root << 1 | 1);pushup(root);return ans;
}int main() {int k;while(~scanf("%d%d", &n, &k)) {for(int i=1; i<=n; i++)scanf("%s%d", node[i].name, &node[i].k);build(1, n, 1);int ansnum;for(int i=1; RPrime[i]<=n; i++) {m = RPrime[i];ansnum = fact[i];}tol = n;int pos;for(int i=1; i<=m; i++) {tol--;pos = update(1, n, k, 1);if(tol == 0)    break;if(node[pos].k > 0)k = ((k + node[pos].k - 2)  % tol + tol) %tol + 1;elsek = ((k + node[pos].k - 1) % tol + tol) % tol + 1;}printf("%s %d\n", node[pos].name, ansnum);}return 0;
}
/*
7 3
a 3
b 2
c -5
d 4
e 8 
f 2 
g -6
*/
View Code

 

转载于:https://www.cnblogs.com/Jiaaaaaaaqi/p/9363576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javax.validation.ValidationException: Unable to find a default provider

2019独角兽企业重金招聘Python工程师标准>>> [ERROR] [2016-11-16 13:58:21 602] [main] (FrameworkServlet.java:457) Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframewo…

android视频播放器api,03.视频播放器Api说明

03.视频播放器Api说明目录介绍01.最简单的播放02.如何切换视频内核03.切换视频模式04.切换视频清晰度05.视频播放监听06.列表中播放处理07.悬浮窗口播放08.其他重要功能Api09.播放多个视频10.VideoPlayer相关Api11.Controller相关Api12.边播放边缓存api13.类似抖音视频预加载14…

Taurus.MVC 2.0 开源发布:WebAPI开发教程

背景&#xff1a; 有用户反映&#xff0c;Tausus.MVC 能写WebAPI么&#xff1f; 能&#xff01; 教程呢&#xff1f; 嗯&#xff0c;木有&#xff01; 好吧&#xff0c;刚好2.0出来&#xff0c;就带上WEBAPI教程了&#xff01; 开源地址&#xff1a; https://github.com/cyq116…

chrome瀏覽器去掉緩存的方法

方法一&#xff1a; 1.開發說打開開發者工具 勾選這個訪問可以 方法二: commandshiftR 转载于:https://www.cnblogs.com/kaibindirver/p/9378572.html

sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root

来说一下咱们的索尼Xperia Z2手机的5.0系统的root&#xff0c;因为现在很多机友的系统是5.0的&#xff0c;可是对于5.0的系统很多机友还不知道如何进行root操作&#xff0c;之前的针对4.4的系统的root方法肯定是用不到5.0的系统上的&#xff0c;因此需要专门的针对5.0的root软件…

ABP文档 - Javascript Api - AJAX

本节内容&#xff1a; AJAX操作相关问题ABP的方式 AJAX 返回信息处理错误 HTTP 状态码WrapResult和DontWrapResult特性 Asp.net Mvc 控制器Asp.net Web Api 控制器动态Web Api层Asp.net Core 控制器动态Web Api层AJAX操作相关问题 执行一个AJAX调用在现在的应用里非常常见&…

stack overflow--技术问答网站

转自&#xff1a;http://baike.baidu.com/link?urleMR6Pwdk9IkauI5B3nZb2Yo3VUAcK6vQfrMpcSMPWqgH0ngqFkup3Gdr3t_s_yZe_UFwkR8c1pboaxhEuY-iwF_nGiUYHajEPMO6Y1kqWvT8aPz7a_T6t3a1vxyTccgKl_UIx1cU-6IP7qjre2ijtq Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在…

uvalive 4973 Ardenia

题意&#xff1a;给出空间两条线段&#xff0c;求距离。 注意输出格式&#xff01; 1 #include<cstdio>2 #include<cmath>3 #include<algorithm>4 using namespace std;5 6 struct Point37 {8 int x, y, z;9 Point3(int x0, int y0, int z0):x(x),y(…

rz和sz上传下载文件

安装软件包 yum install lrzsz 上传文件&#xff0c;输入rz选择文件上传(可以按住shift键多选) # rz sz 下载文件到本地&#xff0c;选择保存文件夹 # sz dd xshell设置默认上传下载文件夹 转载于:https://www.cnblogs.com/fcing/p/9382377.html

怎样在html中设置首字母大写,javascript如何设置字符串首字母大写?

给出一个字符串&#xff0c;如何确保字符串的首字母都大写&#xff1f;下面本篇文章就来给大家介绍一下使用javascript设置首字母大写的方法&#xff0c;希望对大家有所帮助。在javascript中&#xff0c;可以使用slice()方法、toUpperCase()方法和toLowerCase()方法来设置首字母…

win2008修改远程端口

2019独角兽企业重金招聘Python工程师标准>>> 网络上找到的一段代码&#xff0c;保存为.bat&#xff0c;运行修改成功&#xff0c;需要重启。 echo off color 0a echo ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ echo ◇◇◇◇修改远程桌面3389端口批处理◇◇◇◇ ech…

html帮助文档乱码,使用doxygen生成的帮助文档,中文出现乱码的问题

今天使用doxygen工具生成帮助文档发现中文注释都是乱码。然后根据网上的要求把Exper>>Input>>INPUT_ENCODING&#xff1a;(输入文件的编码) UTF-8 改成 GBK 或者 GB2312Exper>>HTML>>CHM_INDEX_ENCODING&#xff1a;(输出文件的编码) UTF-8 改成 GBK 或…

Java并发编程--理解ThreadLocal

另一篇博文&#xff1a;Hibernet中的ThreadLocal使用 http://www.cnblogs.com/gnivor/p/4440776.html 本文参考&#xff1a;http://blog.csdn.net/lufeng20/article/details/24314381http://www.cnblogs.com/chenying99/articles/3405161.html ThreadLocal类接口很简单&#xf…

python之路——迭代器与生成器

要了解for循环是怎么回事儿&#xff0c;咱们还是要从代码的角度出发。 首先&#xff0c;我们对一个列表进行for循环。 for i in [1,2,3,4]: print(i) 上面这段代码肯定是没有问题的&#xff0c;但是我们换一种情况&#xff0c;来循环一个数字1234试试 for i in 1234print(i) 结…

DFS分布式文件系统--管理篇

DFS分布式文件系统--管理篇参考文档&#xff1a;浅谈DFS分布式文件系统DFS 命名空间 和 DFS 复制概述续DFS分布式文件系统--基础篇DFS分布式文件系统--部署篇添加命名空间服务器&#xff08;添加第二台命名空间服务器 NameSrv02)成功后如下图&#xff1a;“从显示区域隐藏命名空…

LVS负载均衡(3)——LVS工作模式与工作原理

LVS介绍及工作原理1. LVS 介绍LVS,Linux Virtual Server 的简写&#xff0c;意即 Linux 虚拟服务器&#xff0c;是一个虚拟的服务器集群系统&#xff0c;可以在 UNIX/Linux 平台下实现负载均衡集群功能。文章&#xff1a;LVS项目介绍LVS集群体系结构LVS集群的IP负载均衡技术LVS…

MyBatis入门(二)---一对一,一对多

一、创建数据库表 1.1、创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybatis ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SE…

零基础学Java的10个方法

2019独角兽企业重金招聘Python工程师标准>>> 版权声明&#xff1a;本文为北京尚学堂原创文章&#xff0c;未经允许不得转载。​ 零基础学Java只要方法得当&#xff0c;依然有机会学习好Java编程。 但作为初学者可以通过制定一些合理清晰的学习计划。 在帮你屡清楚思…

scp windows 和 linux 远程复制 (双向)

一下命令在cmd中 从w -> l : scp D:\a.txt root192.168.2.113:/home/a 从l -> w: scp root192.168.2.113:/home/aaa d:/b.txt 按说在Linux中也可以&#xff0c;但是不知道怎么的只有在winodws上行&#xff0c;在linux上就会报 ssh: connect to host 192.168.2.157 port 2…

北京尚学堂|程序员的智慧

2019独角兽企业重金招聘Python工程师标准>>> 版权声明&#xff1a;本文为北京尚学堂原创文章&#xff0c;未经允许不得转载。 编程是一种创造性的工作&#xff0c;是一门艺术。精通任何一门艺术&#xff0c;都需要很多的练习和领悟&#xff0c;所以这里提出的“智慧…