本次比赛一共想去尝试三道题,看了题意,只觉得A能做出来
总体来说难度确实不小,不过我确实是没读明白B题,A题通过不了,C题都不想去看。其实现在看来,A题是因为眼界放的太小,把题想复杂了,C题总感觉如果去作的话好像有机会,但是也还是没去看。
A
题意:给n个数,让你输出n+1个单词,使得第i个单词和第i-1个单词有a[i]个相同前缀。
思路:其实这题也没什么,就是相对来说,输出的自由度有点大,我一开始是在想就直接弄个数组,第i个单词就输出前max(a[i],a[-1])个前缀,这样的话就是如果要求a[i]是0的话,我这样就不做输出了,就感觉不对,于是再把a[i]为0的情况单独拿出来处理,但这样很容易错,我看到最好的方法就是直接字符串全赋值a,每次把第a[i]个变成b就行了,这样一想真的好简单。
B1&B2
题意:给定一个N表示过河的宽度,k表示潮水变化周期,2k时间中前k每个时间涨潮1,后k每个时间退潮1,l表示人的最小承受深度,然后给n个数表示开始时每个位置的水高度,问你人能否从0游到n+1,每个时间中我们可以选择向前或者不动(不能向后)
思路:B1能用这个思路B2应该不行,太大了。现在能明白的思路就是用dp做的一个,dp[i][j]表示在第i个地方第j个时间,-1表示不可以在这,0表示可以在这,如果上一秒的i地方和i-1地方都是-1不行,就跳过这里(初始值-1)
题意:给你两个字符串,让你把A变成B问你最少操作几次,每次操作可以把几个相同字符加一(a变b) ,变不成就输出-1
思路:首先只有A中字符大于B中字符时才是不能操作的,把每个字母拿出来进行操作,每次操作就是把A中的i字母变成相应的B中相同位置里最小的字母然后答案加一。我感觉答案好像就是A中不同字母的个数减一加B中不同字母减一再加上AB里的相同字母,这也只是突发奇想寻巧不知对不对