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.pswp.cn/news/397408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397408.shtml
英文地址,請注明出處:http://en.pswp.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(…