爱奇艺哪个染色方块为什么是30%???

看评论明白了,原来涂前涂后红绿颜色块不用保持不变,深感自己头脑简单
…………………………………………

天哪!!!简直要崩溃了
前两道题七点就写完了,最后这个改到8点55实在是心态崩了!!!我交卷了!!!
我要吐槽.....
没通过的70%的用例到底是什么???黑人问号

#爱奇艺#
全部评论
dp啊... #include <bits/stdc++.h> using namespace std; int dp[55][2]; int main() { ios::sync_with_stdio(false); cin.tie(0); string str; cin >> str; int len = str.length(); dp[0][0] = str[0] == 'R' ? 0 : 1; dp[0][1] = str[0] == 'R' ? 1 : 0; for (int i = 1; i < len; ++i) { dp[i][0] = dp[i-1][0] + (str[i] == 'R' ? 0 : 1); dp[i][1] = min(dp[i-1][1], dp[i-1][0]) + (str[i] == 'R' ? 1 : 0); } cout << min(dp[len-1][0], dp[len-1][1]) << endl; return 0; } ac代码...有很多情况的....
点赞
送花
回复
分享
发布于 2017-09-10 21:01
暴力解, 对于RGRGR,所有可能的方案是RRRRR\RRRRG\RRRGG\RRGGG\RGGGG\GGGGG,分别与RGRGR比较对应位不同的个数,取不同个数最小的那个。。。。其他长度的类似做,AC了
点赞
送花
回复
分享
发布于 2017-09-10 21:11
秋招专场
校招火热招聘中
官网直投
同30% 我的是一直考虑 R 和G的数量不能变,结果,是TM可以的变的 那为啥题目里给的例子不直接染成RRRRR吗的好气
点赞
送花
回复
分享
发布于 2017-09-10 21:16
我也30%!!!
点赞
送花
回复
分享
发布于 2017-09-10 20:58
前来抱团 30 60 0 感觉必死了
点赞
送花
回复
分享
发布于 2017-09-10 20:59
import java.util.Scanner; public class Main6 { public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ char[] cs = in.nextLine().toCharArray(); int n = cs.length; System.out.println(minPaint(cs, 0, n-1)); } } static int minPaint(char[] cs ,Integer start,int end){ int left = 0; int right = 0; int minLeft = 0; int minRight = 0; while(cs[start]=='R'&&start<end){ start++; } while(cs[end]=='G'&&end>start){ end--; } if(start>=end){ return 0; } while(cs[start+left]=='G'){ left++; } minLeft = left+minPaint(cs, start+left,end); while(cs[end-right]=='R'){ right++; } minRight = right+minPaint(cs, start, end-right); return Math.min(minLeft, minRight); } }
点赞
送花
回复
分享
发布于 2017-09-10 20:59
我也是一直都是30%==
点赞
送花
回复
分享
发布于 2017-09-10 20:59
GGGGRRRRRRRRGRRRRRRRGGGGG应该5次?这种情况你怎么考虑的,
点赞
送花
回复
分享
发布于 2017-09-10 21:00
我也是差那70%,搞不懂,我先用一段代码30%,另一端10%,结果加在一起还是30%。。。
点赞
送花
回复
分享
发布于 2017-09-10 21:00
GGGGGGGGGGGRRR,我这个测试用例没过后来改正了,你看看这个你能过吗
点赞
送花
回复
分享
发布于 2017-09-10 21:00
50% 的 要不要 给你们个思路 ? 先找到最后一个R 然后 看 第一个到最后一个R 中有多少个G 在找到第一个G 看第一个G到最后 有多少个R 两个 取最小即可
点赞
送花
回复
分享
发布于 2017-09-10 21:01
3道题都感觉简单、就是呵呵呵呵了。30 50 60,再见
点赞
送花
回复
分享
发布于 2017-09-10 21:03
我知道哪里错了!原来涂完了之后等我红绿颜色数不用和之前相等啊!
点赞
送花
回复
分享
发布于 2017-09-10 21:08
我想问一下你们怎么知道自己哪个测试用例没过的?我只能看到我过了30%啊…… 还有想问问各位在本地怎么测试的……自己搭环境吗还是啥?
点赞
送花
回复
分享
发布于 2017-09-10 21:09
我的做法是遍历数组,当当前字符是R时,计算在左边的g和它右边的r的个数和,答案就是这些个数和的最小值。但是有一种情况要特殊处理,就是GGGGGGGRR这种,这种输出是2。
点赞
送花
回复
分享
发布于 2017-09-10 21:16
30% 大概就是把题目理解错了,以为涂完前后R和G的数量不能变,其实不然,只要R不在G的右面出现就行,序列甚至可以全R或全G
点赞
送花
回复
分享
发布于 2017-09-10 21:16
兄弟,你理解错题意了,红和绿的数量不是一定的,可以变,只要满足要求就行了。。。
点赞
送花
回复
分享
发布于 2017-09-10 21:17
dp[i] = dp[i-1] - (line[i] == 'R' ? 1 : 0) + (line[i] == 'G' ? 1 : 0); dp[0] = R的数量,求dp里的最小值
点赞
送花
回复
分享
发布于 2017-09-10 21:55

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务