`
zhouxiaojie
  • 浏览: 9189 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

poj2886Who Gets the Most Candies?

    博客分类:
  • poj
阅读更多
  个人觉得从一个位置下一个位置是关键,然后用树状数组就简单了。
  之前举例子推推导公式时只用一个参数,一直凑不出来,后来用两个参数,一个是这列数中原来的位置,另一个是前一个位置的人跳出后,下一个人的前面和自己一共的人数。我用d表示前一个参数,k表示后一个参数。
 
   这一题还学到反素数,真是很有用的东西。

   反素数打表就行,然后线段树+二分, 还有我改得最多的main()函数:
  int aa[37]=     {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,500001};
//所有数可能的因子数(包括1和本身).
int bb[37]={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,1314521};
// 与上面每一个数对应,第一个出现因子数是aa数组的数的数
  int main()
{
    int i,j,g,gg,d,m;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        memset(tree,0,sizeof(tree));
        for(i=1;i<=n;i++)
        {
            add(i,1);
            c[i]=0;
        }
        for(i=1;i<=n;i++)
        {
            scanf("%s%d",s[i].a,&s[i].num);
        }
        for(i=0;i<37;i++)
        {
            if(aa[i]>n)
            {
                g=aa[i-1];
                gg=bb[i-1];
                break;
            }
        }
        k = b(k);
        add(k,-1);
        m = n-1;
        c[k]=1;
        d=k;
        for(j=2;j<=g;j++)
        {

            if(s[d].num>0)
            {
                k = ((k-1+s[d].num)%m+m)%m;
            }
            else
            {
                k = (((k+s[d].num)%m+m)%m+m)%m;
            }
           if(k==0)k=m;
            m=m-1;
            d = b(k);
            add(d,-1);
        }
        printf("%s %d\n",s[d].a,gg);
    }
}
分享到:
评论

相关推荐

    POJ1426-Find The Multiple【BFS+同余模】

    【标题】"POJ1426-Find The Multiple【BFS+同余模】"是一道来源于北京大学在线编程平台POJ的算法题目,主要涉及到了广度优先搜索(BFS)与同余模运算的知识点。这道题目要求解决的是寻找一个整数的倍数问题,可能...

    POJ2388-Who's in the Middle

    《POJ2388-Who's in the Middle》是一个典型的计算机编程竞赛题目,主要考察参赛者的算法设计和实现能力。这个题目源自北京大学的在线评测系统POJ(PKU Online Judge),是编程爱好者和学生提升编程技能的重要平台之...

    POJ2151-Check the difficulty of problems

    标题“POJ2151-Check the difficulty of problems”是指一个编程竞赛题目,来源于北京大学的在线判题系统POJ(PKU Online Judge)。这个题目要求参赛者编写程序来评估问题的难度。描述中的“解题报告+AC代码”表明...

    POJ2983-Is the Information Reliable【差分约束+优化Bellman】

    《POJ2983-Is the Information Reliable:解析差分约束与优化Bellman算法》 北京大学在线编程平台上的POJ2983题目——"Is the Information Reliable",是一道涉及差分约束系统(Differential Constraint System)与...

    POJ1027-The Same Game

    【标题】"POJ1027 - The Same Game"是一个经典的编程竞赛题目,源自北京大学的在线编程平台POJ(Problem Online Judge)。该题目主要考察的是动态规划和矩阵链乘法的知识,要求参赛者编写程序解决一个具有策略性的...

    北大POJ1163-The Triangle

    北大POJ1163-The Triangle

    POJ1163-The Triangle

    【标题】"POJ1163 - The Triangle" 是北京大学在线编程平台POJ上的一道算法题目。这道题目通常被归类为计算机科学与信息技术领域的算法问题,特别是涉及数据结构和动态规划的子领域。 【描述】该题目的解题报告详细...

    POJ1004-Financial Management

    【标题】"POJ1004 - Financial Management" 是一个来自北京大学在线判题系统POJ(Problem Set of Peking University)的编程题目。这个题目主要涉及到计算机科学中的算法设计和实现,特别是与财务管理和计算相关的...

    poj 3174 Alignment of the Planets.md

    poj 3174 Alignment of the Planets.md

    poj 4006 Genghis Khan the Conqueror.md

    poj 4006 Genghis Khan the Conqueror.md

    poj 1611 The Suspects 代码

    poj 1611 The Suspects 代码 并查集的应用

    POJ 3083 Children of the Candy Corn解题报告

    ### POJ 3083 Children of the Candy Corn 解题报告 #### Description 题目描述了一个典型的迷宫问题:在一个玉米地迷宫中,游客需要找到从入口到出口的路径。题目给出了一个常见的策略:选择左墙或右墙并沿着它...

    POJ3239-Solution to the n Queens Puzzle

    北大POJ3239-Solution to the n Queens Puzzle 解题报告+AC代码

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj1860, poj3259, poj1062, poj2253, poj1125, poj2240 - **解释**:最短路径算法包括Dijkstra算法、Bellman-Ford算法、Floyd算法以及堆优化的Dijkstra算法等。 ##### (3) 最小生成树算法 - **例题**...

    POJ3273.rar_M?n

    《POJ3273 Monthly Expense 题解——数据结构与动态规划的应用》 POJ3273,这是一道经典的算法竞赛题目,它涉及到的问题是:如何有效地合并连续的数,使得合并后的集合数量不超过M个,并且这些集合的和尽可能小。这...

    poj题目分类

    * 线段树:例如 poj2528、poj2828、poj2777、poj2886、poj2750。 * 静态二叉检索树:例如 poj2482、poj2352。 * 树状树组:例如 poj1195、poj3321。 * RMQ:例如 poj3264、poj3368。 * 并查集的高级应用:例如 ...

    POJ2635-The Embarrassed Cryptographer 测试数据

    《POJ2635-The Embarrassed Cryptographer:测试数据解析与算法探讨》 POJ2635,这是一个源自NCPC(全国大学生程序设计竞赛)2005年问题D的编程挑战,名为“尴尬的密码学家”。在本文中,我们将深入探讨这个问题的...

    poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告

    poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...

    poj2774.rar_poj_木材计算

    http://poj.grids.cn/problem?id=2774 POJ 2774 木棒加工 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。当然,我们希望得到的小段越长越好,你的任务是计算能够...

    POJ3414-Pots

    标题“POJ3414-Pots”是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目主要考察的是算法设计和实现能力,通常涉及计算机科学中的数据结构和算法知识。 解题报告是参赛者在...

Global site tag (gtag.js) - Google Analytics