http://poj.org/problem?id=2886

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 500100
using namespace std; typedef long long ll;
const int prime[]= {,,,,,,,,,,,,,,,};
int n,k;
struct node
{
int l,r,num;
} tree[maxn*]; ll maxsum,bestnum;
char name[maxn][];
int a[maxn]; void getantiprime(ll num, ll k,ll sum,int limit)
{
//num:当前枚举到的数,k:枚举到的第k大的质因子;sum:该数的约数个数;limit:质因子个数上限;
int i;
ll temp;
if(sum > maxsum)
{
maxsum = sum;
bestnum = num; //如果约数个数更多,将最优解更新为当前数;
}
if(sum==maxsum && bestnum > num)
bestnum = num; //如果约数个数相同,将最优解更新为较小的数;
if(k > )
return;
temp = num;
for(i=; i<=limit; i++) //开始枚举每个质因子的个数;
{
if(temp*prime[k] > n)
break;
temp = temp * prime[k]; //累乘到当前数;
getantiprime(temp, k+, sum*(i+), i); //继续下一步搜索;
}
} void build(int i,int l,int r)//建树
{
tree[i].num=r-l+;
tree[i].l=l;
tree[i].r=r;
if(l<r)
{
int mid=(l+r)/;
build(i+i,l,mid);
build(i+i+,mid+,r);
}
} int search1(int num,int i)//查找原始序号
{
tree[i].num--;
if(tree[i].l==tree[i].r)
{
return tree[i].l;
}
if(num<=tree[i+i].num)
return search1(num,i+i);
return search1(num-tree[i+i].num,i+i+);
} int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
getantiprime(,,,);//找到n以内反素数最大的;
build(,,n);
for(int i=; i<=n; i++)
{
scanf("%s %d",name[i],&a[i]);
}
int id;
for(int i=; i<bestnum; i++)//约瑟夫原理
{
n--;
id=search1(k,);
if(n==) break;
if(a[id]>)
k=(k-+a[id]-)%n+;
else
k=((k-+a[id])%n+n)%n+;
}
printf("%s %lld\n",name[id],maxsum);
}
return ;
}

poj 2886Who Gets the Most Candies?的更多相关文章

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

    POJ 2886 题目大意是说有n个人围成一圈,游戏的起点是k,每个人持有一个数字(非编号)num,每次当前的人退出圈,下一个人是他左边的第num个(也就是说下一个退出的是k+num, k可以为负数, ...

  2. POJ3159 Candies —— 差分约束 spfa

    题目链接:http://poj.org/problem?id=3159 Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submiss ...

  3. POJ 3159 Candies(差分约束,最短路)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 20067   Accepted: 5293 Descrip ...

  4. (poj)3159 Candies

    题目链接:http://poj.org/problem?id=3159 Description During the kindergarten days, flymouse was the monit ...

  5. POJ 3159 Candies (图论,差分约束系统,最短路)

    POJ 3159 Candies (图论,差分约束系统,最短路) Description During the kindergarten days, flymouse was the monitor ...

  6. 线段树(单点更新) POJ 2886 Who Gets the Most Candies?

    题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...

  7. POJ——T 3159 Candies

    http://poj.org/problem?id=3159 Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 33328   ...

  8. 图论--差分约束--POJ 3159 Candies

    Language:Default Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 43021   Accep ...

  9. poj 3159 Candies 差分约束

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 22177   Accepted: 5936 Descrip ...

随机推荐

  1. jeecms v7

    http://bbs.jeecms.com/res_base/jeecms_com_bbs/upload/2015_11/jeecmsv7.zip 安装包 http://bbs.jeecms.com/ ...

  2. java随机数与数组的使用。

    java随机数与数组的使用.    一:题目 二 代码:  public class Students {    int number;  // 学号    int State ;   // 年级   ...

  3. 数据挖掘方面重要会议的最佳paper集合

    数据挖掘方面重要会议的最佳paper集合,兴许将陆续分析一下内容: 主要有KDD.SIGMOD.VLDB.ICML.SIGIR KDD (Data Mining) 2013 Simple and De ...

  4. CentOS修改SSH默认端口

    1. 修改配置文件 vim /etc/ssh/sshd_config 修改 #Port 22 这行,  去掉 #  修改后面的端口号 例如 Port 2123 重启sshd服务 /etc/init.d ...

  5. python 开发一个支持多用户在线的FTP

    ### 作者介绍:* author:lzl### 博客地址:* http://www.cnblogs.com/lianzhilei/p/5813986.html### 功能实现 作业:开发一个支持多用 ...

  6. Android界面刷新方法

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

  7. ASP.net中网站访问量统计方法

    仅共学习 一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime) ...

  8. adb shell - device not found

    如果是真机,则连接usb即可(我的是真机).

  9. eclipse中启动tomcat

    0.以下即使部署好,点小猫启动tomcat,有一个问题,修改jsp文件,本地tomcat中的此jsp并没有修改,如果右键项目启动,则会修改,不知道为什么 1. 首先发布项目,项目右键,run serv ...

  10. c#求slope线性回归斜率

    public class mySlope { // public List<double> Values { get; set; } public double SlopeResult { ...