线段树(单点更新) POJ 2886 Who Gets the Most Candies?
#include <cstdio>
#include <cstring>
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1 const int MAX_N = + ;
int sum[MAX_N << ];
struct node
{
char name[];
int val;
}boy[MAX_N<<];
int ans[MAX_N];
int id;
int n, k; void build(int l, int r, int rt)
{
sum[rt] = r - l + ;
if (l == r)
return ;
int m = (l + r) >> ;
build (lson);
build (rson);
} int update(int p, int l, int r, int rt)
{
sum[rt]--;
if (l == r)
{
return l;
}
int m = (l + r) >> ;
if (p <= sum[rt<<])
{
return update (p, lson);
}
else
{
return update (p - sum[rt<<], rson);
}
} void Solve(){ //计算ans
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++){
ans[i]++;
for(int j=*i;j<=n;j+=i)
ans[j]++;
}
int max=ans[];
id=;
for(int i=;i<=n;i++) //找出第几个人跳出获得的糖最多
if(ans[i]>max){
max=ans[i];
id=i;
}
} int main(void) //POJ 2886 Who Gets the Most Candies?
{
//freopen ("inF.txt", "r", stdin); while (~scanf ("%d%d", &n, &k))
{
build (, n, );
for (int i=; i<=n; ++i)
{
scanf ("%s%d", &boy[i].name, &boy[i].val);
//printf ("%s%d\n", boy[i].name, boy[i].val);
}
Solve();
//int maxn = f(n);
int mod = sum[];
boy[].val = ;
int pos = ;
//printf ("%d\n", id);
int m=id;
while (m--)
{
if (boy[pos].val > )
k=((k-+boy[pos].val-)%mod+mod)%mod+;
else
k=((k-+boy[pos].val)%mod+mod)%mod+;
pos = update (k, , n, );
//printf ("%d ", pos);
mod = sum[];
}
printf ("%s %d\n", boy[pos].name, ans[id]);
}
}
线段树(单点更新) POJ 2886 Who Gets the Most Candies?的更多相关文章
- 线段树单点更新poj 2828
n个人 他要插入的位置 和权值(这东西就最后输出来的) 倒的插就一定是他自己的位子 一个线段树维护一下就可以了 nlog(n) #include<stdio.h> #include< ...
- 线段树(单点更新) POJ 2828 Buy tickets
题目传送门 /* 结点存储下面有几个空位 每次从根结点往下找找到该插入的位置, 同时更新每个节点的值 */ #include <cstdio> #define lson l, m, rt ...
- poj 2892---Tunnel Warfare(线段树单点更新、区间合并)
题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...
- POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)
Brainman Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10575 Accepted: 5489 Descrip ...
- POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)
POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
随机推荐
- iOS APP第一次上架遇到的问题
现在苹果审核时越来越严了,我们有两个APP时同时上线的,代码用的也是一套的.但是有其中一个是第一次发布所以就拒了,信息就是下图.大概意思是用到支付了吗?用户是怎么来的.值需要把这些信息回复了.就OK ...
- 一个动态库连续注册的windows脚本regsvr32
cmd ->for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
- base64 hash sha
/*! * Crypto-JS v1.1.0 * http://code.google.com/p/crypto-js/ * Copyright (c) 2009, Jeff Mott. All ri ...
- yum lock
状态 :睡眠中,进程ID:18439Another app is currently holding the yum lock; waiting for it to exit... 另一个应用程序是: ...
- hive impala C++ Java垃圾回收 Garbage Collection GC
hive impala impala 推荐每个节点内存 2^7~2^8GB Impala与Hive的比较 - 文章 - 伯乐在线 http://blog.jobbole.com/43233/ &l ...
- Remove FileUtil#copyMerge
[HADOOP-12967] Remove FileUtil#copyMerge - ASF JIRA https://issues.apache.org/jira/browse/HADOOP-129 ...
- 李雅普诺夫函数 LyapunovFunction 李雅普诺夫意义下的稳定性
https://zh.wikipedia.org/zh-hans/李亞普諾夫函數 李雅普诺夫函数(Lyapunov function)是用来证明一动力系统或自治微分方程稳定性的函数.其名称来自俄罗斯数 ...
- Zed Shaw:一位老程序员的建议
Advice from an Old Programmer 原文:Zed Shaw,译文:外刊IT评论 导读:原文作者Zed Shaw是一位作家.软件开发人员.音乐人(下文中提到吉他手),于2010年 ...
- Yii2 behaviors中verbs access的一些理解
public function behaviors() { return ArrayHelper::merge(parent::behaviors(), [ 'verbs' => [ 'clas ...
- 适配器、工厂模式、线程池、线程组、互斥锁、Timer类、Runtime类、单例设计模式(二十四)
1.多线程方法 * Thread 里面的俩个方法* 1.yield让出CPU,又称为礼让线程* 2.setPriority()设置线程的优先级 * 优先级最大是10,Thread.MAX_PRIORI ...