CodeForces 13E. Holes 分块处理】的更多相关文章

正解是动态树,太难了,仅仅好分块处理水之.看了看status大概慢了一倍之多..     分块算法大体就是在找一个折衷点,使得查询和改动的时间复杂度都不算太高,均为o(sqrt(n)),所以总的时间复杂度为o(m*sqrt(n)).     分块的大体思想就是将整段区间分成sqrt(n),每次改动影响所在段内的sqrt(n)个点.每次查询遍历sqrt(n)段,然后搞出一些事情.     对于此题,首先说明几个数组的含义:     cnt[i]的意义为从i点開始跳出其所在段所须要的步数.    …
题目链接 nextt数组表示这个位置的下一个位置. cnt数组表示这个位置 i 到nextt[i]可以弹几次. end[i] 表示在从 i 弹出去的情况下, 最后一个位置是哪里. 然后就看代码吧. #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #includ…
E. Holes time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for one person with following rules: Th…
Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for one person with following rules: There are N holes located in a single row and numbered from left to right with numbers from 1 to N. Each hole has it's…
题目:点这 跟这题BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊  一模一样 分析: 分块数组入门题. 具体的可以学习这篇博文以及做国家集训队2008 - 苏煜<对块状链表的一点研究>这篇论文上面的几道题目. #include <set> #include <map> #include <cmath> #include <queue> #include <stack> #include <string>…
题意 n(n≤105)个洞排成一条直线,第ii个洞有力量值ai,当一个球掉进洞ii时就会被立刻弹到i+ai,直到超出n.进行m(m≤105)次操作: ·修改第i个洞的力量值ai. ·在洞xx上放一个球,问该球几次后被哪个洞弹飞出界. 思路 分块暴力,每个块内维护两个信息(块内DP可以求出): ①从当前位置跳出块内需要跳几次num[i] ②从当前块内跳出的下一个位置jump[i] 修改: 只需要将修改元素所在块内信息更新一次即可,单次时间复杂O(√n) 查询: 由起点i不停往下一个块跳jump[i…
E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Description Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for one person with following rules: There are…
题目链接:http://codeforces.com/problemset/problem/13/E 题意:给定n个弹簧和每个弹簧初始的弹力a[].当球落在第i个位置.则球会被弹到i+a[i]的位置. 现在有2种操作: 1 a b:把第a个弹簧的弹力修改为b. 2 a:当球初始放入的位置为a时,需要弹几次才会弹出n.弹出前的最后一个位置是多少. 输出位置和次数. 思路:和BZOJ 2002一样. 然后记录一个最后弹出去的位置preidx.每次弹出当前块的时候记录当前的位置即可.然后最后再暴力模拟…
Holes 题意:现在有一排洞,每个洞有一个弹力,能弹到ai之后的洞,球会弹到这个排的外面,现在有2个操作,0 a b 将第a个洞的弹力设为b, 1 a 将球放入第a个洞,求输出进洞的次数 和 弹出这排洞进入的最后一个洞. 题解:分块暴力,对于每一个块,记录下这每一个点到下一个块的入口位置,和在这个块的最后到的点,还有就是进洞次数.然后每次修改的时候,暴力更新这个块的前半部分就好了. 代码: #include<bits/stdc++.h> using namespace std; #defin…
Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for one person with following rules: There are N holes located in a single row and numbered from left to right with numbers from 1 to N. Each hole has it's…