next

Loj #3055. 「HNOI2019」JOJO

被刻印的时光 ゝ 提交于 2020-12-12 08:00:03
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画。漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」。 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 $x$ 欧拉或者 $x$ 木大表示有 $x$ 个欧拉或者木大。 为了简化内容我们现在用字母表示喊出的话。 我们用数字和字母来表示一个串,例如: 2 a 3 b 表示的串就是 aabbb 。 一开始漫画中什么话都没有,接下来你需要依次实现 $n$ 个操作,总共只有 $2$ 种操作: 第一种: 1 x c :在当前漫画中加入 $x$ 个 $c$,表示在当前串末尾加入 $x$ 个 $c$ 字符。保证当前串是空串或者串尾字符不是 $c$; 第二种: 2 x :觉得漫画没画好,将漫画还原到第 $x$ 次操作以后的样子,表示将串复原到第 $x$ 次操作后的样子,如果 $x=0$ 则是将串变成空串。如果当前串是 bbaabbb ,第 $4$ 次操作后串是 bb ,则 2 4 会使 bbaabbb 变成 bb ,保证 $x$ 小于当前操作数。 众所周知空条承太郎十分聪明,现在迪奥已经被打败了,他开始考虑自己的漫画中的一些问题: 对于一个串的每个前缀 $A$,都有一个最长的比它短的前缀 $B$ 与前缀 $A$ 的一个后缀匹配,设这个最长的前缀 $B$ 的长度为 $L$。$L$ 为 $0$ 时意味着

Python虚拟机之异常控制流(四)

感情迁移 提交于 2020-12-12 07:33:57
Python虚拟机中的异常控制流 先前,我们分别介绍了 Python虚拟机之if控制流(一) 、Python虚拟机之for循环控制流(二) 和 Python虚拟机之while循环控制结构(三) 。这一章,我们来了解一下异常机制在Python虚拟机中的实现 首先,我们来看下面的代码: # python2.5 >>> 1 / 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero    1 / 0在Python中一定会抛出异常,这个异常时ZeroDivisionError。现在,我们来看一下1 / 0对应的字节码指令: # cat demo5.py 1 / 0 # python2.5 …… >>> source = open("demo5.py").read() >>> co = compile(source, "demo5.py", "exec") >>> import dis >>> dis.dis(co) 1 0 LOAD_CONST 0 (1) 3 LOAD_CONST 1 (0) 6 BINARY_DIVIDE 7 POP_TOP 8 LOAD_CONST 2 (None) 11

java实现全排列问题

限于喜欢 提交于 2020-12-12 07:00:16
1.问题描述:     一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格。 2.输入:     输入一个字符串 3.输入示例:     请输入全排列的字符串:     abc 4.输出示例:     a b c     a c b     b a c     b c a     c b a     c a b 5.解题思路:     全排列问题在算法这类问题中属于典型的递归与回溯类问题。这种题目一定要从整体去思考。通过输入示例,我们可以观察到,a,b,c三个字符,都可以放在第一个位置,都可以放在第二个位置,都可以放在第三个位置...根据这个思路,通过我们数学中的全排列公式,有三个位置□□□,第一个位置可以选3个,第二个位置选2个,第三个位置只能选一个。C(1,3)*C(1,2)*C(1,1) (表示不出来...就是数学里面的组合公式)。如果是求组合的个数,则直接利用这个公式相乘,如果打印排列,则如下进行交换,直接在边界条件打印即可,求代码如下: import java.util.Scanner; public class PaiLie { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.println("请输入全排列的字符串:");

推荐两款程序员必备的画图神器

纵然是瞬间 提交于 2020-12-12 06:46:49
点击上方☝ ,轻松关注! 及时获取有趣有料的 技术文章 缘起 最近经常有伙伴问我,作为程序员,有没有好的画图工具推荐,领导说Microsoft Visio画图工具很强,让我们使用,但是我就是用的不习惯。还有没有其他高端的牛逼的,容易上手,一用就爽的画图工具么。 针对这么个问题,我其实也是经验不足,Microsoft Visio我也用过,安装包大,还要破解,用的不多,还买个正版,我的脑子还没瓦塌,我是不会买的。 那么趁着周末给大家分享两款好用的画图工具,作为程序员还是经常需要画一画图的,你应该能明白我说的画图指的是什么,我也就不过多的强调了。 算了,还是强调下吧: 1、程序员不要认为写好代码就好,画好图也很重要,难道你没听过PPT架构师,PPT架构师不就天天画图么 第一点就是皮一下,早日成为架构师,在也不想写代码了 2、关于画图,俗话说,有图有真相!哦,不对,是一图胜千言。一图胜千言,沟通效率那不是刚刚的 这点很重要,不!是特别特别特别的重要!!! 如果你在工作中没有画过图,或者你没有找到合适的画图工具的话,那么读完本文,建议尝试用其中一个开始你画图的表演吧。 第一个款画图工具:Draw.io Draw.io 是一个很好用的免费流程图绘制工具。 你可以利用它绘制一系列的图表、图示或图形,包括流程图、UML 类图、组织结构图、泳道图、E-R 图、文氏图等等,适用于商务、工程、电气

46. Permutations (全排列)

╄→гoц情女王★ 提交于 2020-12-12 06:45:47
Given a collection of distinct numbers, return all possible permutations. For example, [1,2,3] have the following permutations: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 运用递归。 1234为例子 for i in 1234:   1 + 234(的全排列)   2 + 134(的全排列)   3 + 124(的全排列)   4 + 123 (的全排列) 对应程序的17行 1 class Solution(object): 2 def __init__ (self): 3 self.res = [] 4 5 def permute(self, nums): 6 """ 7 :type nums: List[int] 8 :rtype: List[List[int]] 9 """ 10 self.help(nums, 0, len(nums)) 11 12 return self.res 13 14 def help(self, a, lo, hi): 15 if (lo == hi): 16 self.res.append(a[0:hi]) 17 for i in range(lo,

TypeScript 新特性介绍

房东的猫 提交于 2020-12-11 17:43:49
TypeScript 字符串新特性 多行字符串 JavaScript 定义多行字符串 var word = 'aaa' + 'bbb' + 'ccc' TypeScript 定义多行字符串 var word = ` aaa bbb ccc ` 字符串模板 var myName = "Zhang San"; var getName = function() { return "zhangsan" } console.log(`hello ${myName}`); console.log(`hello ${getName()}`); 自动拆分字符串 function test(template, name, age) { console.log(template); console.log(name); console.log(age); } var myName = "Zhang san"; var getAge = function() { return 18; } test `my name is ${myName}, I'm ${getAge()}`; 参数新特性 参数类型 在参数名称后面使用冒号来制定参数的类型 声明类型 any string number booleam void (不需要返回值的函数) var myName: string = "zhang san";

遍历聚合对象中的元素——迭代器模式(二)

╄→尐↘猪︶ㄣ 提交于 2020-12-11 09:26:54
2 迭代器模式概述 在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是 存储数据 ;二是 遍历数据 。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更符合“单一职责原则”的要求。 迭代器模式定义如下: 迭代器模式 (Iterator Pattern) :提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标 (Cursor) 。迭代器模式是一种对象行为型模式。 在迭代器模式结构中包含聚合和迭代器两个层次结构,考虑到系统的灵活性和可扩展性, 在迭代器模式中应用了工厂方法模式 ,其模式结构如图 3 所示: 图 3 迭代器模式结构图 在迭代器模式结构图中包含如下几个角色: ● Iterator (抽象迭代器): 它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的 first() 方法,用于访问下一个元素的 next() 方法,用于判断是否还有下一个元素的 hasNext() 方法,用于获取当前元素的 currentItem() 方法等,在具体迭代器中将实现这些方法。 ● ConcreteIterator (具体迭代器):

VB.Net中的三元运算符

爱⌒轻易说出口 提交于 2020-12-11 06:52:55
IIf(expr, truepart, falsepart) 参数描述 :   expr 必要参数。用来判断真伪的表达式。   truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。   falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。 Note:使用IIF时,不管expr是真还是假,后面的truePart和falsepart都会进行计算,虽然它只返回其中的一个。    例如,如果 falsepart 产生一个被零除错误,那么程序就会发生错误,即使 expr 为 True。       原来它对每个表达式都会进行计算,如果某一项为DBnull则就会抛出异常,所以在进行非空判断时应该用if的形式,而不应该用iif 比如下面两行代码,有可能就会抛异常 Me.TextBoxOLevelYear12.Text = IIf(myExamResultsDT.Item(11) Is Nothing, String.Empty, myExamResultsDT.Item(11).O_YEAR) Me.TextBoxOLevelYear3.Text = IIF(NmyExamResultsDT.Rows.Count>0, NmyExamResultsDT.Rows(0)("O_YEAR"),String.Empty) PS:

VB.Net中For循环注意事项

我的未来我决定 提交于 2020-12-11 00:13:15
由一个简单的例子来说明 Dim i As Integer Dim init_val As Integer = 0 Dim final_val As Integer = 1 For i = init_val To final_val msgbox(i) final_val = 10 Next i 结果只会弹窗两次,分别显示0、1, VB.Net的 终值修改是不起作用的 ,终值只会在进入For前判断一次。 这个和其他语言有较大的区别,谨慎谨慎再谨慎。 来源: oschina 链接: https://my.oschina.net/u/4267539/blog/4790331

[菜鸟SpringCloud入门]第一章:构建多模块的Maven项目+创建注册中心Eureka子模块

倾然丶 夕夏残阳落幕 提交于 2020-12-09 18:55:50
前言 欢迎来到菜鸟SpringCloud入门实战系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。 本系列适合有一定Java以及SpringBoot基础的同学阅读。 每篇文章末尾都附有本文对应的Github源代码,方便同学调试。 Github仓库地址: https://github.com/qqxx6661/springcloud_for_noob 菜鸟SpringCloud入门实战系列 你还可以通过以下两种途径查看菜鸟SpringCloud入门实战系列: 关注我的公众号:Rude3Knife 点击公众号下方:技术推文——SpringCloud 菜鸟SpringCloud实战专栏(CSDN) 实战版本 SpringBoot:2.0.3.RELEASE SpringCloud:Finchley.RELEASE -----正文开始----- 构建多模块的Maven项目 + 创建注册中心Eureka子模块 构建多模块的Maven项目 由于SpringCloud中有许多组件,每个组件都需要单独进行开发和维护,为了便于统一的版本维护和管理,我们经常会用到Maven的多模块模式。 结构如下: 在这里插入图片描述 创建主工程 首先创建一个Maven项目作为主工程,类型无所谓,这里建议使用maven-archetype