愿你走出愿你出走半生归来仍是少年出处少年出自哪儿

前言:本次测试是在家通过网络提交进行的,不出所料,我又考得十分“爆炸”,炸到我怀疑人生。

另外,由于以前有一些题目迟迟没有改完,所以我打算改完哪场比赛的题目就先写那场比赛的总结,避免遗忘和拖沓,虽然可能会有些乱。。。


“回文分数”游戏并不简单。游戏的目标是修改最多maxChanges个字符使得一个字符串word的回文分数最高。只允许修改,不许增加或者删除字符。
一个字符串的回文分数定义如下:

1、如果字符串不是回文串,则分数为0。
2、如果字符串是回文串,且长度为奇数,则分数为1。
3、如果字符串是回文串,且长度为偶数,我们将它分为左右两半。计算它的一半子串的回文分数为K(两个一半子串得分一定相同),则原字符串的回文分数为K + 1。

给定一个字符串word和一个型整数maxChanges,返回最多修改maxChanges个字符后最大可能的回文分数。

回文串的定义是一个字符串从前向后读和从后向前读完全一样。





如果把x改成a,得到偶数长度的回文串”abcbaabcba”。它的一半子串是奇数长度的回文串”abcba”,所以子串分数为K = 1,因而最后得分是K + 1 = 2。

我们可以把c改成r,把e改成o,得到”rodor”。这是一个奇数长度的回文串,所以得分为1。


解题思路(模拟+贪心)

这题做得我十分痛苦,其实这是一道比较简单的贪心+模拟题。我一开始的做法就是照着题目要求模拟,在一次比较,两个字符不同时,关键就是如何替换才使答案最优。如果随便替换的话将对后面的答案有影响。所以我当时的做法是处理一层的替换的时候看看下一层,怎样替换对下一层更优我就怎样替换。本质就是看看字符的出现个数。

然而这样未必对,我们知道,如果当前层对下一层一样优的话,对下下层可能不一样。但是我这样做也有94分,好一段时间内我不知道该怎么改。其实必须边递归边展开所有层判断是否能继续,再统计答案。由于层数不超过6层,所以这样不会超时。但这样的方法其实并不直观们还有一种更易理解的方法。

直接枚举答案,假如长度为12,枚举的答案为2,则可以表示为1 2 3 3 2 1 1 2 3 3 2 1,然后将相同数字的位置改成相同字符即可。如何改就贪心,改成哪个字符修改次数少就那么改,再和maxChanges比较判断答案。



你有一台超小的电脑,内存只有两个寄存器:X和Y。寄存器只能存储正整数,一开始两个寄存器的值都是1,电脑操作系统只有两种指令:指令[X]和指令[Y]。
指令[X]的功能是:X ← X + Y,即把两寄存器目前的值累加到X寄存器;
指令[Y]的功能是:Y ← X + Y,即把两寄存器目前的值累加到Y寄存器。例如:指令序列”XXYYX”的执行过程如下:

可以发现,执行指令序列”XXYYX”后,X寄存器的值是10,Y寄存器的值是7。现在你的任务是:给你一个正整数R, 你要编写指令序列,使得最后X寄存器的值是R (此时Y寄存器可以是任意整数). 当然,我们希望你编写的指令序列的长度要尽量短,在此前提下,如果有多种方案,请输出字典序最小的一种方案。



一个字符串,代表生成R的长度最短的指令序列。




解题思路(更相减损术(迭代)+gcd)

如果直接宽搜,必定超时。
我们必须注意到一点,如果我们枚举一个Y,是可以直接根据最短步数得到方案的。
这个得到方案的方法就是在数学上有了解到的更相减损术。

容易证明,我们不断用大数减小数,得到的差和较小数再次重复做这个操作,不断迭代,步数一定是最短的。根据一些方法,我们可以知道可能的最少步数不会超过三十几步,这里我是用斐波那契数列去发现的(然后考试时我就想歪了。。)。

于是时间就是枚举Y(1e6)然后乘上个三十几。至于枚举的Y不一定是合法的,合法的前提是与给出的X互质,为什么呢?因为更相减损术就是在求gcd啊!于是不与X互质的Y必然不会产生合法答案。然后就写个欧几里德算法判断,时间照样不成问题。不过考试时我思维僵化,连方向都错了。

字典序就做完一次判断更新答案。如果算的过程中,答案长度已经超过可能的最优长度(三十几)或当前答案,就不用往下做了,直接跳过,这样可以节省很多时间。最后倒叙输出答案就行了。

坑点:第一是特判,然后不要用字符串,要用字符数组记录答案,否则超时。。



FJ最近得到了一份工作,那就是送肯德基外卖。FJ所在的小镇可以看作是R行C列矩形,被划分成R×C个单元格子,从上往下,行的编号是1至R;从左往右,列的编号是1至C。FJ一开始在第1行第1列的格子处,他收到D个顾客的订单,第i个顾客的位置在第Ri行第Ci列的格子。FJ一开始就把所有顾客的订餐一起装在背包里,这样在送餐过程中就没必要一定要返回出发点了,FJ必须严格按照次序给顾客送肯德基(即先送完第1个顾客,再送第2个顾客,…依次类推)。当送完所有的肯德基外卖后,FJ也没有必要返回出发处。FJ每一步的移动规则是这样的:FJ可以从当前格子移动一步,到达相邻的左格子或者相邻的右格子(两个格子相邻是指它们有公共边);此外,如果FJ当前所在格的列是第1列或者第C列,那么FJ还可以向上移动一格或者向下移动一格。任意时刻,FJ都不能走出矩形的边界。FJ每进入一个格子,都会在该格子停留一定的时间T,在不同的给子,FJ停留的时间可能不同。FJ送完所有订餐,至少需要多少时间?


第一行,两个整数,R和C。
接下来有R行C列,第i行第j列的整数表示FJ进入第i行第j列的格子,必须在那个格子停留的时间T
接下来一行,有一个整数D,表示有D个顾客订餐。
接下来有D行,每行两个整数,依次表示顾客的位置,即所在行和所在列。 顾客所在的位置没有重复。


一个整数,送完所有订餐的最少时间。




首先要吐槽一下题目的翻译,FJ送肯德基。。

本题多种做法,我在考试时没时间了(吃晚饭),于是写了一个狂暴的SPFA,地图上每个点都提出来做最短路,拿了50分。然而最短裤(路)能拿70分,dp是满分。

首先讲讲SPFA的方法求最短路。
我们发现由于只有第一列和最后一列是可以向下向上走的,其他的只能横着走,于是我们将那两列点单独拿出来做一遍SPFA,建图、做法就不用说了,维护行和列的前缀和,这样就得到了这两列点互相到达的最短路了。注意这里做2n次SPFA,时间复杂度的级别是 ,k是SPFA的常数,m是边数,与点数成正比,这样其实理论是n^2的,但是常数太大,所以很慢。但实测也是能过的(前提是加了玄学优化)。

算出那些点的最短路后,对于每组询问,我们分5种情况,设二点为A和B,第一列为1,最后一列为m,则

上面所有行的第三个箭头都是沿最短路走,其他的打横走就查询部分和。于是,通过SPFA求最短路,分类讨论取最小值,就可以解决此题了。不过SPFA部分我写的比较复杂,也不如下面的DP方法巧妙。

其实DP的做法也是在求最短路。
不过,计算最短路的时间是严格的 O(4n2) 。首先我们除了 dis[i][j] 表示点 ij的最短路外,我们要先预处理出一个 表示第i行的左边的点向右边的点走的最短路径。就是从第一列的某个点出发,通过各种“蛇皮走位”,到达同行的最后一列的最短路径。

为什么要先算这个呢?假设不是同一行的点,最短路径可能绕很多次。如下图

当行数变多,拐的弯可能越来越多,枚举拐点是不太可行的。而当同一行时,拐一次一定是最优的。如图

若红色的是最短路,由于T非负,毫无疑问黑色的路径更优。

那我们枚举拐点求出 cost[] ,然后用 cost 去更新 dis 数组。具体的更新就是按照如下次序:

如果当前最短路的源点在左边,更新次序就是第i行的右边,再到第i行的左边,反之就相反。更新的方法就是用部分和与 cost ,具体的公式参见代码,注意不要算重算漏。

预处理的时候我们知道每个点到自己的最短路和对面的最短路。然后n^2按行数向下更新就行了,只向下是为了避免重复计算。

最后一样的分类讨论算出答案。





考试时很不在状态,简单的题居然脑抽不会做,还有希望以后改题写总结能快点,不然很多事情都做不了,好好把握时间才行,争取多做有意义的事,提高水平。


愿你走出半生 归来仍是少年

“愿你走出半生,归来仍是少年”在网上火了好一阵子了,爆红程度不亚于当年的“你若安好,便是晴天”,成了不少网友的QQ签名,一众网络大V也纷纷引用,特别一到毕业季,常作为师生之间的临别赠言。关于这句网络流行语的原始出处,争议非常大,至今也没有一个令人信服的说法。

有人说是商界大佬雷军的金句,2017年4月9日,雷军在微博上秀出一张以母校武汉大学为背景的照片,并配上了这句话;有人说是地产大亨王石的名言,王石在2017年8月19日“中国商业心灵”论坛演讲的题目为《百战归来仍少年》;还有人说它出自北京四中初二女生孙咏言的作文,这篇作文的写作日期是2017年3月12日。

从时间上看,似乎孙咏言同学略占上风,然而早在2016年就已经有人出版了同名图书(下文会详细提到)。因此雷军也好,王石也罢,亦或北京四中女生,都是在这句话火了之后才开始引用的,并非他们原创。

关于网上盛传的出自于诗人冯唐《冯唐诗百首》的说法,也纯属子虚乌有。笔者把这本诗集翻了个底朝天,也没找到相关的诗句。不过也有人指出,冯唐在微博上说过这句话,笔者特意搜索了冯唐微博发现,冯唐引用这句话的时间是2018年3月31日,所以可以确信这句话的原创者也非冯唐。

顺便一提,另一网络语“愿有岁月可回首,且以深情共白头”也常被网友归在冯唐的名下,其实是出自黄信然所著的《和花和月长少年》,分别在这本书的目录两处:Chapter 04 愿有岁月可回头;Chapter 09 唯有深情共白头。后来有人在豆瓣写此书的书评,才把这两句放在了一起“愿有岁月可回首,且以深情共白头”。

人所共知的冯唐名句“春风十里不如你”,出自冯唐《三十六大》之二十四里的其三十:“查床头,纸笔还在,字迹尚可辨认:‘春水初生,春林初盛。春风十里,不如你’,诗句大好。于是欢喜。”有网友指出“愿有岁月可回首,且以深情共白头”就在这段话的后面,但笔者查看原文,根本就没有这句话,因此这种说法只是网友的信口开河与转发者们的以讹传讹造成的。

网络上还流行着另一种观点,“愿你走出半生,归来仍是少年”出自某位作家的一部书名。至于是哪位作家?三言两语还真说不清楚。因为在2016年至2017年间,先后涌现出几本书名大同小异的图书,正是它们的陆续出版,推动了该网络流行语的热度。以下是笔者梳理出的这批图书先后面市的时间轴:

2016年6月1日,蒲思恒《愿你走出半生,归来仍是少年》

2016年8月15日,孙衍《愿你出走半生,归来仍是少年》

2016年9月1日,王锋《愿你道路漫长》(后记引用)

2017年3月1日,林清玄《愿你,归来仍是少年》

2017年8月1日,曾锴《愿你历尽千帆,归来仍是少年》

那么我们是否就能将原创者认定是作家蒲思恒了呢?答案是否定的。因为网上有不少文章的发表时间比这本书的出版时间还要早,例如这一篇《愿你出走半生,归来仍是少年》/note// 发表时间是,但这还不一定就是原始出处,只是笔者所能搜到的最早的一篇。

因此我的结论是,这句话的原创者只是一位无名网友。诗意般的文字受到网友们的喜爱,经过不断传播发酵,才逐渐在网上流行起来。一些“嗅觉灵敏”的作家跟风而上,出版同名图书,再加上各种网络大V、知名人士的推波助澜,才有了今天这样的火爆程度。

虽然我们无从考证这位原创网友究竟是谁,不过中华文化源远流长,常言道:天下好句已被唐诗宋词写尽!“愿你走出半生,归来仍是少年”同样的含义,其实早被宋代大诗人苏轼写过了!我们来看下面这首宋词:

北宋·苏轼《定风波·南海归赠王定国侍人寓娘》:

常羡人间琢玉郎,天应乞与点酥娘。尽道清歌传皓齿,风起,雪飞炎海变清凉。

万里归来颜愈少,微笑,笑时犹带岭梅香。试问岭南应不好?却道:此心安处是吾乡。

元丰二年(1079),苏轼的好友王定国受苏轼“乌台诗案”的牵连,被贬到岭南蛮荒之地宾州。王定国有一歌妓名叫宇文柔奴,跟王定国一起随行到岭南。元丰六年(1083)王定国得赦北归,请出柔奴为苏轼劝酒。苏轼问道:“广南风土,应是不好?”柔奴答曰:“此心安处,便是吾乡。”苏轼深受感动,当即写下了这首词。

我要回帖

更多关于 愿你出走半生归来仍是少年出处 的文章

 

随机推荐