算法
文章平均质量分 72
ckr_sdj
这个作者很懒,什么都没留下…
展开
-
教主的魔法
题目:教主的魔法题目大意:给定一个数列,修改和查询两种操作,修改每次给定一个区间,区间的所有元素都加上一个给定值,查询询问一段区间的数权值大于等于给定值的数有多少个。做法:这是一道分块的好题,首先先进行分块,然后每个块暴力修改,暴力排序,然后求值时暴力二分即可,反正就是一道暴力的题目代码如下:#include#include#include#include#include原创 2017-08-17 14:40:24 · 188 阅读 · 0 评论 -
弹飞绵羊 分块
题目描述某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lost原创 2017-08-18 10:05:47 · 199 阅读 · 0 评论 -
星球大战JSOI2008
题目描述很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起原创 2017-08-29 09:14:10 · 257 阅读 · 0 评论 -
分块初学2
题目:区间修改,区间查询做法:和普通的分块做法类似,mrak[i]表示第i这个块每个元素加上的值,d[i]表示第i这个块所有元素之和。代码如下:#include#include#include#include#include#includeusing namespace std;int block,n,m,op,x,y,z;long long a[100005],l[原创 2017-08-17 10:38:32 · 169 阅读 · 0 评论 -
分块初学(1)
今天早上开始刚学习了分块,发现分块并没有想象中的那么高深,其实只是将暴力进行了不错了的优化,把n优化成了根号n。题目1:单点修改,区间求值做法:这显然是一道树状数组,线段树裸题,但可以用分块水一下。block表示每一个块的大小。 l[i]表示第i这个块左边起点,r[i]表示第i这个块右边的终点。belong[i]表示i属于第几个块。 d[i]表示第i这个块元素之和。预处理完之原创 2017-08-17 09:24:42 · 157 阅读 · 0 评论 -
一个不错的套路题
题目大意:给定n个数,请你帮助小明求出里面有多少个连续的数的平均数大于给定的某个数M.并将这个方案数输出。注意:这个数可能会很大,所以请输出这个数对92084931取模的结果。做法:这是一道很经典的套路题。因为M固定所以讲所有读入的a[i]均减去M。然后对减M后的a[i]进行前缀和操作。则[i,j]区间平均数大于M等价于该区间减掉M后和大于0然后我们会发现如果sum[i]-sum[j]>0原创 2017-07-20 14:05:02 · 1063 阅读 · 0 评论 -
RMQ初学
今天在看学校PPT的时候学习了一下RMQ算法。f[i][j]表示从第i位开始(包括第i位)的连续2^j个数中的最大值。初始化一下:f[i][0]=a[i];然后利用类似动规的思想求出所有的f[i][j];我做了一道模板题POJ3264代码如下:#include#include#include#include#include#includeusing namesp原创 2017-08-09 09:44:55 · 193 阅读 · 0 评论