最近学习了一下树状数组,这道题纠结了很久,终究是因为没有明白树状数组怎么用。
这里我就以实用主义说一下使用方法(其实我觉得其原理应该能对我们更有启发,也许会带来很多潜在的好处):
这里需要注意的是,bit的实现代码中的bit数组一开始必须清零,这个数组并不是用来储存元素的,而是为实现这个数据结构而存在的。 你需要存储的元素是要通过那个add函数添加的,而求和则是要通过sum函数实现的,而这个...
分类:
编程语言 时间:
2015-05-02 20:47:20
阅读次数:
170
分析:L段,N圈,则总共可表示为L*N段,用增加20%的能量表示一个状态,则可表示20%,40%,%60。。。,共15个,注意第15个时要清零到两个能量卡;用dp[i][j]表示在第i段能量为j的已用时的最少时间。则可得到方程1、不用能量卡时dp[i][j]=min(dp[i][j],dp[i-1][j-1]+a[i-1];用能量卡时dp[i][j-5]=min(dp[i][j-5],dp[i-1...
分类:
其他好文 时间:
2015-04-29 15:13:45
阅读次数:
115
MAJOR宏将dev_t向右移动20位,得到主设备号;MINOR宏将dev_t的高12位清零,得到次设备号。相反,可以将主设备号和次设备号转换为设备号类型(dev_t),使用宏MKDEV可以完成这个功能。
Linux内核允许多个驱动共享一个主设备号,但更多的设备都遵循一个驱动对一个主设备号的原则。
内核维护着一个以主设备号为key的全局哈希表,而哈希表中数据部分则为与该主设备号设备对应的驱动程序(只有一个次设备)的指针或者多个同类设备驱动程序组成的数组的指针(设备共享主设备号)。根据所编写的驱动程序...
分类:
其他好文 时间:
2015-04-27 11:26:35
阅读次数:
153
1.什么叫分配内存,什么叫释放内存
分配内存:操作系统把某一块内存空间的使用权力分配给该程序
内存释放:操作系统把分配给该程序的内存空间的使用权力收回,
该程序就不能使用这块内存空间
附注:释放内存不是把该内存的数据清零
2.变量为什么必须初始化
不初始化,变量通常是垃圾值,很可能是上次程序结束遗留下来的数据。
3.详细说明系统如何执行:int i = 5...
分类:
其他好文 时间:
2015-04-25 13:42:13
阅读次数:
193
题意:有三个骰子,每个点数1-k[i],甩到每个点数的几率为1/k[i]。 然后有a,b,c,如果第一个骰子投到a,二投到b,三投到c,那么分数清零,否者分数累计。问多少步,可以让分数大于n。
思路来自:http://www.cnblogs.com/jackge/archive/2013/05/21/3091839.html
做法:把n+1 到n+sumk 的dp 都清为0,因为他们不需要步数。 然后 dp [n]到dp[0] 中 dp[i] 的步数是为∑(dp[i+k]*p)+dp[0]*p+1,...
分类:
其他好文 时间:
2015-04-18 11:38:03
阅读次数:
109
题意:有n个数字围成一个圈,然后从圆圈拿走连续的一些数,问拿走的数的和的最大值是多少。
题解:普通最大连续和的做法,如果前面累加的数加当前数是大于最大值就更新最大值,如果小于0就把累加值清零,这个是有环的,那么可以从两种情况考虑,一种是普通的最大连续和找到的最大值,另一种就是头尾拼接的,把所有数取相反数,然后找到最大连续和,那么用总和sum加这个数就是头尾拼接的最大值,取两种情况较大的就是解。
...
分类:
其他好文 时间:
2015-04-16 01:31:42
阅读次数:
134
描述
两种操作:
1. (1, x, y) 表示 x 点权值增加 y
2. (2, x, y) 表示求 [x, y] 区间的最大值与次大值的差.
分析
可以采用线段树对于操作1, 就是单点修改操作2, 先找到区间最大值, 然后把这个点清零, 再求一遍区间最大值. 相减输出. 最后单点修改改回原状态.有许多细节需要注意.
代码
{CSDN:CODE:6319...
分类:
其他好文 时间:
2015-03-31 09:07:43
阅读次数:
181
前段时间购买了一个vps,做梯子感觉不错,但是在校园网内,vps流量远超10块钱校园流量,眼看着上个月vps的流量被清零。但是校园网有免费的IPV6,而我的VPS也有个IPV6的地址,于是乎就想着如何通过IPV6免费上网。 第一步就遇到了问题,在vps上ping ipv6.google.com...
分类:
其他好文 时间:
2015-03-21 22:40:16
阅读次数:
254
数据结构设计StructBigIngter{intdigit[1000];intsize;Voidinit()//清零,全为0Voidchange(charstr[]){ // 输入的数倒放在digit[]中}BigIngteroperator+(cosntBigIngter&A)const{ //...
分类:
其他好文 时间:
2015-03-21 13:49:00
阅读次数:
107
LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明控制这四个外部中断靠以下寄存器这三个寄存器的0 1 2 3位分别代表中断的0 1 2 3,EXTINT寄存器表示中断是否发生,在发生中断的时候该寄存器会置位,可以通过写1清零,EXTM...
分类:
其他好文 时间:
2015-03-14 01:01:59
阅读次数:
6164