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…

第十章练习题----2

package com.Hanqi2;public class xitizhuhanshu {public static void main(String[] args) {// TODO Auto-generated method stubxiti tm new xiti("黑色","15寸");xitizhs tm3 new xitizhs("蓝色","15寸");tm.Call("654"…

关于微信“被返回页”在被返回时自动刷新

网上有很多这些文章&#xff0c;但我觉得没一篇真正解决这个问题&#xff0c;倒是能给人一个解决方案的思路&#xff0c;对&#xff0c;就是posState事件。 要解决这个问题也不难&#xff0c;使用history的replaceState属性替换当前网页链接&#xff08;其实作用是在不增加hist…

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

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

使用Python重命名MP3标签

从Window复制MP3文件的到Ubuntu下&#xff0c;MP3标签很多是乱码。于是想自己写个Python程序处理一下。 从酷狗复制过来的音乐文件名都是“作者 - 标题”&#xff0c;所以可以通过解析文件名直接获取作者和标题信息。 需要下载eyeD3模块 $ sudo apt-get install python-eyed3 代…

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…

android 锁屏 home,android 锁屏界面禁用长按home 和menu(recent apps)

android 5.1 系统中public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {//检查当前是否锁屏&#xff0c; 可以添加getTopApp()判断当前activity 来屏蔽2398 final boolean keyguardOn keyguardOn();添加新的方法&#xff1a;//获…

Chrome浏览器调试踩坑

Chrome浏览器若在响应式状态下&#xff0c;页面缩放比例不是100%&#xff0c;元素会“窜位”&#xff0c;点击元素会点击到元素周围的元素 Chrome页面缩放比例不为100%时&#xff0c;table的单元格就算没有边框&#xff08;CSS去掉了&#xff09;也会显示出边框&#xff08;缝隙…

WordPress 博客文章时间格式the_time()设置

国外设计的WordPress 主题里的文章的时间格式是类似“十一月 21, 2010”这种格式的&#xff0c;而中国人习惯的是年在前&#xff0c;月紧跟其后&#xff0c;日在末尾&#xff0c;所以看国外的就显得很别扭&#xff0c;但是我们可以通过修改WP时间代码来设置成为我们中国人习惯的…

linux yum

更改linux YUM源方法&#xff1a;第一步&#xff1a;进入yum配置文件目录&#xff1a;cd /etc/yum.repos.d/第二步&#xff1a;备份配置文件&#xff1a;mv CentOS-Base.repo CentOS-Base.repo.bak第三步&#xff1a;下载网易的配置&#xff08;或其他源配置文件&#xff09;&a…

chrome瀏覽器去掉緩存的方法

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

Apache Tomcat目录下各个文件夹的作用

1.bin&#xff1a;存放各种不同平台开启与关闭Tomcat的脚本文件。 2.lib&#xff1a;存tomcat与web应用的Jar包。 3.conf&#xff1a;存放tomcat的配置文件。 4.webapps&#xff1a;web应用的发布目录。 5.work&#xff1a;tomcat把由各种jsp生成的servlet文件存放的地方。 6.l…

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调用在现在的应用里非常常见&…

视达配色教程17 灰色的色彩意象是什么

视达配色教程17 灰色的色彩意象是什么 一、总结 一句话总结&#xff1a;没有个性的色彩 1、灰色的一般意象是什么&#xff1f; 所有混沌的情感不友好的色彩可怕、恐怖和残忍感情贫乏或者内向年龄和年老遗忘的过去贫困与谦虚劣等的颜色秘密与非法合适的中等-男式时装的标准 二、…

AngularJs 相应回车事件

最近做项目&#xff0c;要用到AngularJs&#xff0c;之前也有用过一点点&#xff0c;但仅限于数据的绑定&#xff0c;这次项目要整个前端需要使用这个框架&#xff0c;可能是不熟悉的原因&#xff0c;感觉这代码搞起来非常的不便利&#xff0c;&#xff1b;现总结一个响应回车事…

android6流畅,Android应用流畅(Seamlessness)设计

即使你的应用程序是快速且响应灵敏的&#xff0c;但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互&#xff0c;意外的数据丢失&#xff0c;意料之外的阻塞等 等。避免这些问题&#xff0c;有助于理解应用程序运行的上下文和系统的交互过程&#xff…

stack overflow--技术问答网站

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

8782:乘积最大

【题目描述】 有一个长度为N的数字串&#xff0c;要求选手使用K个乘号将它分成K1个部分&#xff0c;找出一种分法&#xff0c;使得这K1个部分的乘积能够为最大。 【题目链接】 http://noi.openjudge.cn/ch0206/8782/ 【算法】 决策过程&#xff1a;决策插入第i个乘号的位置使插…

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(…