p1

字符串最小表示

走远了吗. 提交于 2019-11-27 00:49:25
求字符串的循环最小表示: 上面说的两个字符串同构的,并没有直接先求出Min(s),而是通过指针移动,当某次匹配串长时,那个位置就是Min(s)。而这里的问题就是:不是给定两个串,而是给出一个串,求它的Min(s),eg:Min(“babba”) = 4。那么由于这里并非要求两个串的同构,而是直接求它的最小表示,由于源串和目标串相同,所以处理起来既容易又需要有一些变化:我们仍然设置两个指针,p1, p2,其中p1指向s[0],p2指向s[1],仍然采用上面的滑动方式: (1) 利用两个指针p1, p2。初始化时p1指向s[0], p2指向s[1]。 (2) k = 0开始,检验s[p1+k] 与 s[p2+k] 对应的字符是否相等,如果相等则k++,一直下去,直到找到第一个不同,(若k试了一个字符串的长度也没找到不同,则那个位置就是最小表示位置,算法终止并返回)。则该过程中,s[p1+k] 与 s[p2+k]的大小关系,有三种情况: (A). s[p1+k] > s[p2+k],则p1滑动到p1+k+1处 --- 即s1[p1->p1+k]不会 是该循环字符串的“最小表示”的前缀。 (B). s[p1+k] < s[p2+k],则p2滑动到p2+k+1处,原因同上。 (C). s[p1+k] = s[p2+k],则 k++; if (k == len) 返回结果。 注

BZOJ1233: [Usaco2009Open]干草堆tower

给你一囗甜甜゛ 提交于 2019-11-26 23:21:52
Description 奶牛们讨厌黑暗。 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 。一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来。第i包干草有一个 宽度W_i(1<=w_i<=10000)。所有的干草包的厚度和高度都为1. Bessie必须利用所有N包干草来建立起干草堆,并且按照他们进牛棚的顺序摆放。她可以相放多少包就放 多少包来建立起tower的地基(当然是紧紧的放在一行中)。接下来他可以放置下一个草包放在之前一级 的上方来建立新的一级。注意:每一级不能比下面的一级宽。她持续的这么放置,直到所有的草包都被安 置完成。她必须按顺序堆放,按照草包进入牛棚的顺序。说得更清楚一些:一旦她将一个草包放在第二级 ,她不能将接下来的草包放在地基上。 Bessie的目标是建立起最高的草包堆。 Input 第1行:一个单一的整数N。 第2~N+1行:一个单一的整数:W_i。 Output 第一行:一个单一的整数,表示Bessie可以建立的草包堆的最高高度。 Sample Input 3 1 2 3 Sample Output 2 输出说明: 前两个(宽度为1和2的)放在底层,总宽度为3,在第二层放置宽度为3的。 +----------+ | 3 | +---+------+ | 1 | 2 | +---+---

Javascript之Dom艺术二

▼魔方 西西 提交于 2019-11-26 11:28:41
一。样式编程 1.页面中的每一个元素都具有一个style对象,此对象管理元素的CSS样式。这是在IE4.0引入的,后来作为DOM标准被接受。使用方法: var oDiv=document.getElementById("div1"); alert(oDiv.style.backgroundColor); style对象拥有一个cssText属性,返回描述元素样式的CSS字符串。 2.样式对象style的方法(IE6并不支持这些方法): (1)getPropertyValue(propertyName) ——返回CSS特性propertName的字符串值,比如this.style.getPropertyValue("background- color");这里的propertyName必须按照CSS的样式定义。 (2)getPropertyPriority()——返回important字符串或者为空 (3)item(index)——返回给定索引处的CSS特性名称 (4)removeProperty(propertyName)——移除某CSS特性 (5)setProperty(propertyName,value,priorty)——按照执行优先级设定CSS特性的值 3.通过隐藏层实现自定义鼠标提示的例子: < html > < head > < title > Style

面向对象 --类

99封情书 提交于 2019-11-25 20:22:41
1.类的实例化: 调用类的过程称之为类的实例化,产生的对象也可以称之为类的一个实例 ''' 调用类产生对象发生的事情: 1.会产生一个空对象的名称空间 2.会自动触发__init__,并且会将对象当做第一个参数传入。 3.会将调用类括号内的参数一并传给__init__(). 4.self代表实例本身 5. 补充: 如果类中没有定义构造,在实例化的时候会默认创建一个空的构造函数 ''' class People: country = 'China' def __init__(self,name,sex): print(self.__dict__) print(self) self.name = name self.sex = sex # self.fun = self.func() @@@@@@@@@@ def func(self): print(f'你的名字是:{self.name},性别是:{self.sex}') # p1 = People('kimi','male') # p1.func() print(People.country) class method: def fun(): print('122343333333333') method.fun() 2. 查看类和实例的名称空间: # print(People.__dict__) # print(p1.__dict_