题目传送门

 #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?的更多相关文章

  1. 线段树单点更新poj 2828

    n个人 他要插入的位置 和权值(这东西就最后输出来的) 倒的插就一定是他自己的位子 一个线段树维护一下就可以了 nlog(n) #include<stdio.h> #include< ...

  2. 线段树(单点更新) POJ 2828 Buy tickets

    题目传送门 /* 结点存储下面有几个空位 每次从根结点往下找找到该插入的位置, 同时更新每个节点的值 */ #include <cstdio> #define lson l, m, rt ...

  3. poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

    题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

  4. POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)

    Brainman Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10575   Accepted: 5489 Descrip ...

  5. POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)

    POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...

  6. POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)

    POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...

  7. HDU 1754 I Hate It 线段树单点更新求最大值

    题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...

  8. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  9. HDU 1166 敌兵布阵(线段树单点更新,板子题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. Python开发【2.3 模块】

    1.模块导入 import 模块名 from 模块名 import 函数/类/变量 2.模块路径 import sys sys.path 3.模块重新导入 Python3若想在同一次会话中再次运行文件 ...

  2. XFire WebService demo

    XFire创建WebService实例应用 XFire使得在JavaEE应用中发布Web服务变得轻而易举.和其他Web服务引擎相比,  XFire的配置非常简单,可以非常容易地和Spring集成.   ...

  3. Hibernate commit() 和flush() 的区别

    <<精通Hibernate java对象持久化技术详解>> ,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flus ...

  4. 获取Android设备无线和以太网MAC地址

    package com.raycloud.wolf.blogformac; import android.net.wifi.WifiManager; import android.support.v7 ...

  5. 5.3linux下C语言socket网络编程简例

    原创文章,转载请注明转载字样和出处,谢谢! 这里给出在Linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后 ...

  6. 安全性测试--CSRF攻击

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  7. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用

    之前的文章分析过,接受索引请求处理的代码在segmenter_worker.go里: func (engine *Engine) segmenterWorker() { for { request : ...

  8. SPOJ:Lexicographically Smallest(并查集&排序)

    Taplu and Abhishar loved playing scrabble. One day they thought of inventing a new game using alphab ...

  9. Android Studio手动下载配置Gradle的方法

    1 问题 (1) android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home, ...

  10. A. Vanya and Table

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...