程序员进阶之算法练习(十五)

前言

有朋友推荐一个新的算法练习网站leetcode,说北美的公司招人都是400题起步,国内公司招聘也经常用到,上海的尤其多。
很有意思,可以花点时间做做leetcode,看看题目质量。
这次更新的仍然是CodeForces的Contest710

正文

A

题目链接
题目大意
一个8*8的棋盘,输入一个点表示国际象棋中的king的位置,求king能行动的格子数量;


输入两个字符,表示列和行。 列是'a'到'h',行是1到8。

Example

input

e4

output

8

题目解析
题目较简单,看如何实现比较方便。
列-'a'得到索引x;
行-'1'得到索引y;
特判当king在边界的时候和同时在两个边界的时候。

B

题目链接
题目大意
输入n个x轴上的点,输出和n个点距离最近的点,如果有多个点,输出最左边的那个点。
n (1 ≤ n ≤ 3 * 1e5)
x[i] ( - 1e9 ≤ x[i] ≤ 1e9)

Example

input

4
1 2 3 4

output

2

** 题目解析**
对点排序,易知最后的点在最中间。

对于在[A, B]中的点x,易知x到A和B的距离是固定;
那么对于[A, B, C]的最优解,必然是在B;
同上,在[A,B,C,D]中,点x到A和D的距离是固定的,同时与x到[B, C]的最优解的重叠。
类推,得到答案就是排序完最中间靠左边的点。

C

题目链接
题目大意
输入一个奇数n,输出一个n*n的矩阵,矩阵内数字从1到n*n。
矩阵的要求是行、列、对角线的和都是奇数。
n (1 ≤ n ≤ 49)

Examples

input

1

output

1

input

3

output

2 1 4
3 5 7
6 9 8

题目解析
我们把1到n*n的数字抽象成0,1.(根据奇偶性)
我们来看 n=3的时候
010
111
010

问题是当n=5的时候,如何构造?
已知,n=3的矩阵,那么只要保证n=3外面的矩阵行列和都是偶数就行。
1 010 1

0 010 0
1 111 1
0 010 0

1 010 1

那么题目可以变成这样一圈圈的去构造;
并且为了方便,从中心开始构造最为简单。

E

题目链接
题目大意
构造n个'a'字符,x为insert/delete 'a'一次的代价,y为复制粘贴一次的代价。
n, x and y (1 ≤ n ≤ 107, 1 ≤ x, y ≤ 109).

Examples

input

8 1 1

output

4

input

8 1 10

output

8

题目解析:
动态规划。
dp[i] 表示构造i个字符的最优解。
对应三种可能,三个状态转移。
dp[i] = min(dp[i], dp[i + 1] + x); 删除
dp[i + 1] = min(dp[i + 1], dp[i] + x); 增加
dp[i * 2] = min(dp[i * 2], dp[i] + y); 双倍

1 2 4 8 16 13 26 52 删除3次,double 6次
1 2 4 6 12 13 25 52 增加3次,double 6次

F

题目链接
题目大意
m个操作。
操作1,把一个字符串s放入集合D,每次插入不同;
操作2,把一个字符串s从集合D删除,保证有值;
操作3,询问一个字符串x在集合中子串的数量。
m (1 ≤ m ≤ 3·1e5)

Examples

input

5
1 abc
3 abcabc
2 abc
1 aba
3 abababc

output

2
2

题目解析:
题目有一个很重要的性质:每次插入不同。
于是可以插入建一个自动机,删除建一个自动机,相减即可。

查找函数再引入一个dp值,如果访问一次,就记录当前值。这样每个点就只访问一次
build函数,dp值=-1 比较关键
这里的字典树要引入一个flag来标志是否真的有孩子。(build之后,及时字典树没有孩子,ch指针也会指向fail指针)死循环了几次
插入和更新,在引入一个flag,有更新之后再重新build

如果题目数据更强:(队友提供的神优化)
再引入logN的优化,建logN个自动机,分别存放1、2、4、8等个自动机。

总结

A、B是简单题,C是构(脑)造(洞)题,E是动态规划,F是AC自动机。
新年快乐~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,724评论 0 33
  • 前言 最近来公司面试的开发者很多,经验从1、2年,到5、6年都有,大都不堪重用。或许在一些程序员眼里,能实现功能,...
    落影loyinglin阅读 3,830评论 2 25
  • 前言 转眼已经到5月,可是我还没订17年的计划,真是悲伤的故事。今年还是想花点时间,玩玩题目。题目不会太简单,也不...
    落影loyinglin阅读 867评论 0 3
  • 自从上次五官争功后,那手指也想出争出个高低,于是就在这:“是我!”“是我!”“我才是第一!”的声音中拉开了...
    零方程阅读 450评论 0 1
  • 从老家回来,群里一个女孩加了我微信。没有说话。夜里12点半,我看了她朋友圈和她的文章。深深地被那些细腻、敏感的思绪...
    旷野里的树儿阅读 380评论 7 10