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

前言

最近在接触新知识,也是选择2017年的方向。
其他文集更新会放缓,没有学习就没有心得,肚中无墨就无从下笔。
但是算法练习还是挺好玩的,欢迎关注algorithm文集

正文

A. Bus to Udayland
题目链接
题目大意:
输入n行字符,每行5个字符;
表示公交车上n排位置,X表示有人,O表示空位,|是过道。
问是否能找到两个连续的空位;
如果可以,输出"YES",并且空位改为++后输出;
如果没有输出"NO";
n (1 ≤ n ≤ 1000)

Example

input

5
XX|XX
XX|XX
XO|OX
XO|OO
OX|XO

output

YES
XX|XX
XX|XX
XO|OX
XO|++
OX|XO

** 题目解析:**
只有两种情况,前两个或者最后两个。
分情况讨论即可。

B. Chris and Magic Square
题目链接:http://codeforces.com/contest/711/problem/B
题目大意:
输入一个n*n的数组矩阵,在数字为0的位置填入一个正数(只有一个位置为0),让矩阵的行列对角线和相同。
如果没有答案输出-1;
如果答案,输出完整的矩形。
n (1 ≤ n ≤ 500)

Example

input

3
4 0 2
3 5 7
8 1 6

output

9

input

4
1 1 1 1
1 1 0 1
1 1 2 1
1 1 1 1

output

-1

** 题目解析:**
看似很难,但是因为只有一个位置为0,题目简化许多。
我们假设存在答案,那么可以:
根据上一行和当前行的差值,可以计算出0应该填的数字。
再判断一下结果是否符合即可。

C. Coloring Trees
题目链接
题目大意:
有n棵树排成一行,m种颜料(数字1~m);
输入n个数字,表示n棵树当前的颜色(0为uncolor,其他为当前的颜色);
树的排列顺序有一个魅力值, 连续的相同颜色值算1点魅力值,例如:
树的颜色排列为 [2, 1, 1, 1, 3, 2, 2, 3, 1, 3],其魅力值为7,分别如下:
{2}, {1, 1, 1}, {3}, {2, 2}, {3}, {1}, {3}

如果树的颜色是uncolor,代表可以染色;
输入n*m个数字,表示第i颗树染色成第j种颜色的代价cost[i][j];

问,如果要把树的魅力值变为k,需要的最小代价是多少?(如果无解,输出-1)

n, m and k (1 ≤ k ≤ n ≤ 100, 1 ≤ m ≤ 100)

Example

input

3 2 2
0 0 0
1 2
3 4
5 6

output

10

input

3 2 2
2 1 2
1 3
2 4
3 5

output

-1

** 题目解析:**
从给出的数据范围来看,容许时间复杂度比较大的做法。
从给出的选择来看,每次的抉择只有uncolor的树,假设要染色的树是i,大概的类别有:
1、color[i-1] != color[i+1],这时color[i]可以等于color[i-1]或者color[i+1],或者都不相同;
2、color[i-1] == color[i+1],这时color[i]可以等于color[i-1]和color[i+1],或者都不相同;
因为题目要求的是特定的魅力值,故而不能用贪心的做法。
考虑用动态规划来做,
dp[i][j[k] 表示前i个,color为j,最后一个为颜色k的最小代价;
对于第i颗树,color为j的状态,考虑以下的状态:
1、color[i] != 0,不能染色,那么j=color[i]的状态,可以通过dp[i-1]的状态中获得最小代价;
1、color[i] != 0,不能染色,那么j!=color[i]的状态,不合法,忽略;
1、color[i] == 0,能染色,那么枚举j的状态,从dp[i-1]转移即可。
具体的转移方程较多,可以见代码。

** 思考🤔:
如果把k去掉,改成最大值,是一道不错的面试题。**

** D. Directed Roads**
题目链接
** 题目大意:**
给出n个点,每个点有一条从其出发的有向边;
现在选择一个边的集合,对集合的每条边进行一个翻转的操作;
要求:让n个点没有形成环。
问有多少种集合可能,结果对MOD取余。
n (2 ≤ n ≤ 2·1e5)
MOD = 1e9 + 7.

Example

input

3
2 3 1

output

6

input

4
2 1 1 1

output

8

题目解析:
注意重点:每个点初始状态只有一条有向边,那么每个环都是简单的环(没有重叠的环)。
那么把所有的点分成两种,环上的点,环外的点。
不在环上的点有k个,那么有2^k个选择。
第i个环的数量为num[i],有2^num[i] - 2个选择。(全选和全不选是不行的)
结果之乘积就是答案。

总结

不知道你们有没有这样一种感觉,当你换到一个新的环境,接触到很多新的知识之后,本能地开始排斥这些新的内容。
表现出来的行为就是焦虑,觉得很多事情未完成,但是仍然注意力不集中。
明知道这些知识很重要,但是就不愿意去学,觉得这个东西很难且以后也很少用到。
这种焦虑就是人与人的价值观区别,甚至有的人会抱着好奇心的态度去接受这种新知识。
不去评判价值观的好坏,但如果能怀着好奇的心态迎接新的生活,总归会过的轻松点。

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

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,743评论 0 33
  • 手机铃声响起,是公司发来面试的通知。 本应该在长沙实习的我,偏偏再次回到学校,我心里明白这是在逃避现实,可我...
    邓奈斯阅读 338评论 0 0
  • 汪荨吓得差点没把手机摔了,心怦怦直跳:“你是凌澈?” “嗯。” 坐在汪荨旁边的余梦也吓了一跳,吃惊的看了一...
    公子陌荨阅读 798评论 4 22
  • 因為香蕉可以: 1、減少便秘 2、消除緊張 3、減緩壓力 4、改善胃潰瘍症狀 5、解宿醉 6、放鬆心情、減少憂鬱症...
    四方八野阅读 298评论 0 0
  • 住在树洞里 我和邻居一样 脆弱,自私 就是受伤的蘑菇 朝贡的指甲 步步挪动 正在敛财的月亮 一把把他抹去 不久我会...
    阿弥断层之怪阅读 173评论 0 4