CF 13E. Holes 分块数组】的更多相关文章

题目:点这 跟这题BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊  一模一样 分析: 分块数组入门题. 具体的可以学习这篇博文以及做国家集训队2008 - 苏煜<对块状链表的一点研究>这篇论文上面的几道题目. #include <set> #include <map> #include <cmath> #include <queue> #include <stack> #include <string>…
Holes 题意:现在有一排洞,每个洞有一个弹力,能弹到ai之后的洞,球会弹到这个排的外面,现在有2个操作,0 a b 将第a个洞的弹力设为b, 1 a 将球放入第a个洞,求输出进洞的次数 和 弹出这排洞进入的最后一个洞. 题解:分块暴力,对于每一个块,记录下这每一个点到下一个块的入口位置,和在这个块的最后到的点,还有就是进洞次数.然后每次修改的时候,暴力更新这个块的前半部分就好了. 代码: #include<bits/stdc++.h> using namespace std; #defin…
正解是动态树,太难了,仅仅好分块处理水之.看了看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…
题目描述: 一条直线上n个点,每个点有个“弹力”,可以把当前位置x上面的ball弹到x+a[x]上面. 两种操作 0. 修改a处的弹力值,编程b 1. 询问a点的ball经过多少次能跳出n个点外(就是出界了)....求出弹跳的次数和最后落脚的点. 块状链表就是用来暴力模拟的. 用块状链表可以把时间复杂度从O(n)变成O(sqrt(n)). 这道题目的复杂度为O(m*sqrt(n)). 具体实现还是直接看代码容易理解…… #include <iostream> #include <algo…
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…
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…
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…
http://codeforces.com/problemset/problem/61/E 题意是求 i<j<k && a[i]>a[j]>a[k] 的对数 会树状数组求逆序数的话,这个推一下就能出结果: 做法: 1.离散化,由于a[i]能够达到1e9 2.插入a[i]的时候,记录x[i]=i-sum(a[i]); a[i]之前比a[i]大的有x[i]个 3.插入完毕后,求a[i] 之后比a[i]小的数的个数y[i] ans=segma(x[i]*y[i])   注…
题目链接: 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 rul…