A. Three Piles of Candies
题解:根据最少两堆差值决定第三堆咋分
B. Odd Sum Segments
题解:n个数分成k块,每块和为奇数,从开头开始加到奇数算一块,再继续加到奇数算一块,直到没有奇数可加或到n-1个数,rk=n。
C. Robot Breakout
找到所有点可到公共点,设公共点范围为lx hx ly hy,根据每个点的移动范围调整公共点范围,最后,若得到的范围合理,则输出该范围内任意值,否输出0.
D1. RGB Substring (easy version) /D2
保持 …RGBRGB…子串,问需要修改的最少个数,直接对字符串从开头进行三种判断 RGB GBR BRG ,取MIN,输出
E. Connected Component on a Chessboard
黑白子的放置、假设n个白子,则黑子最多3n+1个,反之亦然。两种棋子少子固定后多子环绕放置(这题当初题没读懂,辣鸡)
F. K-th Path
(个人认为本篇唯一难题,苦逼的是简单题也把我卡死)
求第K短的路径。一个连通图,把两两点的距离存入后排序第k短的输出,但全排序无疑超时,所以只需存入部分。
如何?
对边权值排序,取前min(k,m) m为共有m条边,把他们存到数组a中,对于每个j到k的距离加入第三个点i , a[j][k] = min(a[j][k], a[j][i] + a[i][k]); 把所有距离值存入ans 数组,排序,取第k-1个输出
如何存入a二维数组?
a[i][j]表示 点i到j 的距离,为了节省数组空间,对每条边的实际端点值进行修改,设了一个map,mp[x] 对应值为0,就把变成一个新的值,cnt++,不为0,就继续用旧值。
总结: 如今看来的简单思维题除去F,vp时也只过了AB道,B的思路还是队友讲的,思维不够啊,需要多做题多总结让思路清晰,写题时经常还未思考清楚就开始打代码,结果就是易出锅。