P3509 [POI2010] ZAB-Frog 题解】的更多相关文章

题目描述 On the bed of one particularly long and straight Byteotian brook there lie  rocks jutting above the water level. Their distances from the brook's spring are  respectively. A small frog sitting on one of these is about to begin its leaping traini…
题目大意:有$n$个点,每个点有一个距离(从小到大给出),从第$i$个点跳一次,会跳到距离第$i$个点第$k$远的点上(若有两个点都是第$k$远,就跳到编号小的上).问对于从每个点开始跳,跳$m$次,最后会到哪个点 题解:难点主要在处理第$k$远上(跳只需要一个类似快速幂的东西就好了,也就是倍增). 可以维护两个指针,一个是$l$,一个是$r(r=l+k)$,且到$i$这个点时$l\leqslant i\leqslant r$.刚开始时$l=1,r=k+1$,若$p_{r+1}-p_i<p_i-…
题目链接 题目大意 一只青蛙在长度为N的字符串上跳跃,"R"可以跳上去,"P"不可以跳上去. 字符串是环形的,N-1和0相连. 青蛙的跳跃距离K的取值范围是[1, N-1],选定K之后不可改变. 要求青蛙最后能跳回起点(起点可以是0-N-1的任意一个位置),问K的取值有多少种选择. \(3≤N≤{10}^5\). 题目思路 主要是要发现每一次走的步数一定是gcd(i,n) 然后发现gcd只有log(n)(可能多一些,但是没多太大) 然后O(n) check 代码 #…
Content 有一只小青蛙想游历 \(n\) 块土堆,它现在在 \(1\) 号土堆上,每次可以跳跃任意距离到达另外的一个土堆.它想让每次跳跃的距离都不相等,试找到这样的一个方案. 数据范围:\(1\leqslant n\leqslant 10^4\). Solution 我们可以尝试左右横跳的方式,从 \(1\) 跳到 \(n\),再从 \(n\) 跳到 \(2\),再从 \(2\) 跳到 \(n-1\)--以此类推,直到所有的土堆都遍历过为止. Code int n; int main()…
POI2010题解 我也不知道我为什么就开始刷POI了 有些题目咕掉了所以不完整(我都不知道POI到底有多少题) [BZOJ2079][Poi2010]Guilds (貌似bz跟洛谷上的不是一个题?) 并查集判孤立点就行了. #include<cstdio> #include<algorithm> using namespace std; int gi(){ int x=0,w=1;char ch=getchar(); while ((ch<'0'||ch>'9')&a…
2093: [Poi2010]Frog Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 568  Solved: 186[Submit][Status][Discuss] Description 一个条河无限宽,上面有n块石头,石头离左边的河岸(无限宽,右边河岸不晓得在哪)距离严格递增,现在Zxl想锻炼自己的跳跃能力(谁叫他在班里外号是鸟怪..畸形),他在某一块石头上,想跳到离他这块石头第k远的石头上去,假如离他第k远的石头不是唯一的,他就选离岸最…
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1310683 扯闲谈 觉得这是道比较好的引导模型转换的题,就决定写一篇题解 即使我就是看的ZSY的,并且几乎写的一模一样(还是稍有不同的) 安利一发租酥雨的题解 原题地址:洛谷P3502 [POI2010]CHO-Hamsters 先理解题意 给出\(n\)个字符串,让你用这\(n\)个…
    这是一道字符串建模+图论的问题. 题目描述 Byteasar breeds hamsters. Each hamster has a unique name, consisting of lower case letters of the English alphabet. The hamsters have a vast and comfortable cage. Byteasar intends to place a display under the cage to visuali…
题目描述 给出N个正整数a[1..N],再给出一个正整数k,现在可以进行如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1.经过一定次数的操作后,问最大能够选出多长的一个连续子序列,使得这个子序列的每个数都不小于k.总共给出M次询问,每次询问给出的k不同,你需要分别回答. 输入输出格式 输入格式:第一行两个正整数N (N <= 1,000,000)和M (M <= 50).第二行N个正整数,第i个正整数表示a[i] (a[i] <…
Description 从一个点到达与他距离第 \(k\) 小的点,问从每个点跳 \(m\) 次到达那个点. Sol 队列+倍增. 保持队列里的元素个数为 \(k\) ,从前往后扫不难发现左右端点都是单调的. 求跳 \(m\) 次就是倍增了,滚一下数组. Code /************************************************************** Problem: 2093 User: BeiYu Language: C++ Result: Accep…