这道题综合性挺强的,又牵扯到数论,又有线段树. 线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个. 我在这调程序调了好久,就是那个模来模去的弄得我头晕. 不过题确实是好题,给赞. #include <cstdio> #include <iostream> #include <cmath> #include <string> #include <algorithm> #include <vector>…
Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 11955   Accepted: 3734 Case Time Limit: 2000MS Description N children are sitting in a circle to play a game. The children are numbered from 1 to N in clockwise…
Description N children are sitting in a circle to play a game. The children are numbered from 1 to N in clockwise order. Each of them has a card with a non-zero integer on it in his/her hand. The game starts from the K-th child, who tells all the oth…
题目链接: https://cn.vjudge.net/problem/POJ-2886 题目大意: N个人围成一圈第一个人跳出圈后会告诉你下一个谁跳出来跳出来的人(如果他手上拿的数为正数,从他左边数A个,反之,从他右边数A个) 跳出来的人所得到的糖果数量和他跳出的顺序有关 所得的糖果数为 (假设他是第k个跳出的) 则他得到的糖数为k能被多少个数整除 解题思路: 首先将因子个数打表:因子个数打表模板 然后先求出1-n中因子个数最大的为x,约瑟夫环进行x次 用线段树求出每次约瑟夫环后的具体下标.因…
题目大意:n个小孩按顺时针站成一圈,每次会有一个小孩出队(第一个出队的小孩已知),在他出队时会指定下一个出队的小孩,直到所有的小孩全部出队游戏结束.第p个出队的小孩会得到f(p)个糖果,f(p)为p的正约数个数.问获得最多糖果的小孩是谁?并求出他获得的糖果数.如果有多解,只输出最先出队的那个小孩. 题目分析:先将1~n之内的具有最多约数个数并且最小的那个数打出来,然后模拟相应的次数操作即可.模拟时利用到线段树,用线段树维护区间中有多少个小孩还没有出队,每次出队一个小孩就将他在树中删除,最后利用线…
题意:有一群小朋友围成一个环,编号1,2,3…N.每个人手上握着一个非0的数字,首先第K个人出列,然后看他手上的数字,假设为m,则从下一个开始第m个人出列,一直如此.并设i为小于等于N的最大反素数,问第i个出列的人得编号,i的约数个数.(设g(i)为i的约数的个数,若任意j<i,都有g(j)<g(i)则i为反素数). 首先要得到[0,N]的最大反素数(怎么得到下面再说),然后模拟出列操作,用线段树来优化使得每次出列在O(logN)时间内完成. #include <iostream>…
线段树可真有意思呢续集2... 区间成段的替换和增减,以及区间求和等,其中夹杂着一些神奇的操作,数据离散化,简单hash,区间异或,还需要带着脑子来写题. 有的题目对数据的操作并不是直接按照题面意思进行操作,而是换一个角度,通过对其他数据的操作得到结果,感觉真的是...啊啊啊啊啊啊,我的脑子离家出走了,他在哪啊(ಥ_ಥ)ru 写到后面的题目就感觉满满的都是套路,只要想到怎样处理数据以及如果通过线段树维护数据就可以,但是就是这个是关键(废话...),嘤嘤嘤,一拳一个嘤嘤怪,好好写题解... POJ…
Description N children are sitting in a circle to play a game. The children are numbered from 1 to N in clockwise order. Each of them has a card with a non-zero integer on it in his/her hand. The game starts from the K-th child, who tells all the oth…
题目链接:https://vjudge.net/problem/POJ-2886 题意:n个人围成一个圈,每个人有姓名s和权值val两个属性,第一轮序号为k的人退出,并根据其val指定下一个人,val为正即其右第val个人,val为负及其左第val个人.求第p个出局的人的姓名,其中p的约数最多,并输出约数的数量. 思路:首先是数学问题,可通过唯一分解定理或筛法打表计算出n个人时第几个出局的人的约数最多f1[n],和约数的数量f2[n],数据很小,不打表的话会超时.然后进行f1[n]次循环,每次找…
题意  n个人顺时针围成一圈玩约瑟夫游戏  每一个人手上有一个数val[i]   開始第k个人出队  若val[k] < 0 下一个出队的为在剩余的人中向右数 -val[k]个人   val[k] > 0 时向左数val[k]个  第m出队的人能够得到m的约数个数个糖果  问得到最多糖果的人是谁 约瑟夫环问题  n比較大 直接模拟会超时   通过线段树能够让每次出队在O(logN)时间内完毕  类似上一道插队的题  线段树维护相应区间还有多少个人没出队  那么当我们知道出队的人在剩余人中排第几…