本文共 2072 字,大约阅读时间需要 6 分钟。
A. Three Friends
在x轴上有三个点,对每个点只能操作一次,可执行操作:左移一个单位,右移一个单位,或者不动。求操作之后,两两之间距离的最小距离和。B.Snow Walking Robot
四个字符表示四种移动方向,需要从(0,0)点出发又回到(0,0),问尽量少的删去字符串中的一些字母并重新排列剩下的字母后能否使其从(0, 0)运动至(0, 0),除起点外其余点仅能访问一次,输出最大移动次数,并输出最大移动字符串。Yet Another Broken Keyboard
给定一个字符串,和k个字符,问在字符串中有多少子串是给定的k个字符中的字符组成的。(长度为k的字符串子串有k*(k+1)/2)D. Remove One Element
给定一串数字,最多可以从这串数字中删除1个数字(也可以不删),问删除后最长的严格单调递增连续子串多长E. Nearest Opposite Parity
对于每个位置的数i,如果i-a[i]>=1,那么跳到下表为i-a[i]的位置,如果i+a[i]<=n,那么跳到下标为i+a[i]的位置;求出对于每个位置的数,进行着两种操作的最小的次数到达与当前数奇偶性相反的数,如果不能达到输出-1。F. Two Bracket Sequences
给定两个只包含左右括号的序列 a 和 b,求最短的规则序列 s ,使得 a 和 b 都是 s 的子序列,输出这个字符串s。我AC了三道题,但是感觉这三道题都挺水的…没有涉及到任何的算法知识,只是简单的小思维题。简单的说一下思路:
A. Three Friends
最水的一道题目,看完题目就能出思路,找出最大值和最小值分别左移和右移就可以。B.Snow Walking Robot
读完题之后就很自然的想到,当l=r u=d时才能回到原点,所以要先统计l,r,u,d的个数,然后找出l r,u d中较小的数,计算就好了。还有一种特殊情况,仅仅上下或者左右移动时,只要两步就ok。Yet Another Broken Keyboard
也比较简单,主要就是考察一个字符串的子串有多少个,题目都给了公式了,坏的键会分割出来的各个好的串,然后做法就是题目一开始说的在好的串里挑选字串的公式 l*(l+1)/2下面的题目就都是没做出来的了:
后边这俩题,看题解都看的一脸懵…尽量去理解思路
E. Nearest Opposite Parity
这个去CSDN去查,发现用了啥超级源点、反向建边,然后去详细了解了一下。 具体思路: 对于每个位置的数跑最短路,每个位置的数一次最多到达两个点,那么就相当于给图上的点连边,然后就是求以这个点为起点到达与这个点奇偶性相反的点的最短距离,dp[i][0]代表下表为i的数到达奇数的最短距离,dp[i][1]代表到达偶数的最短距离,那么反向建图,反向建图就是能求这个点能到达的点往自己的最短路。F. Two Bracket Sequences
用了从未尝试过的三位dp和dfs,比较新颖。 dp[i][j][k]表示第一个串到第i个位置,第二个串到第j个位置时,左括号比右括号多k个的最少长度。 每次新增一个位置的时候只有两种情况,判断一下是否出现过。用一个pre数组记录每个情况新增的括号是什么,和从那里转移过来的即可。并且注意左右括号之间的差不会超过200这6道题比赛的时候都看了,每个题都试着做了做,最终只出来了三道最简单的,b题是一道dp的题目,比赛的时候想到用dp做了,但我对dp都快有恐惧感了,一点做这道题的信心都没有,看到dp就想把这个题目放了。剩下的两个题,都没啥思路就都放了。
有一段时间没打比赛就感觉手生了不少,出题速度变慢了,还还出了一个小错误没检查出来,导致罚时了…所以下午就又找了几道题做了一下,找找手感。又看了看树的部分,了解了树的基本概念和二叉树。 状态不是太好,明天加油!转载地址:http://ghbiz.baihongyu.com/