搜狐笔试

没有AC一题,
1.最大数 60%
2.国王珠宝 40% (TL)
3.袋鼠过河 60%
第一题说有很大数的情况,不知道问题在哪;
第二题完全暴力求解,结果超时
第三题没有考虑最优解的情况,只是根据给的数字判断能不能过河也通过了60%,233


------

更新:都是大神啊
#搜狐#
全部评论
全A了,提供下项链O(N)解法,代码可以更精简点,过了就没管了 #include <iostream> #include <string> #include <deque> using namespace std; int cut(const string &neck) { int i = 0; int j = 0; int mini = neck.length() / 2; int flag[5] = {0}; int count_f = 5; deque<char> deq; deque<int> pos; while(i < neck.length() / 2 && j < neck.length()) { if(neck[j] <= 'E') { if(deq.empty()) { i = j; deq.push_back(neck[j]); pos.push_back(j); flag[neck[j] - 'A'] = 1; count_f--; } else if(deq.front() == neck[j]) { deq.push_back(neck[j]); pos.push_back(j); flag[neck[j] - 'A']++; char head = deq.front(); while(flag[head - 'A'] > 1) { deq.pop_front(); pos.pop_front(); flag[head - 'A']--; head = deq.front(); i = pos.front(); }; } else { deq.push_back(neck[j]); pos.push_back(j); if(flag[neck[j] - 'A'] == 0) { count_f--; } flag[neck[j] - 'A']++; } if(count_f == 0) { if(mini > j - i + 1) { mini = j - i + 1; } } } j++; } return neck.length() / 2 - mini; } int main() { string neck; while(cin>>neck) { cout<<cut(neck + neck)<<endl; } return 0; }
点赞 回复 分享
发布于 2016-09-21 17:52
2.6赛马网跟我有仇似的
点赞 回复 分享
发布于 2016-09-21 17:41
1 0.4 0.4
点赞 回复 分享
发布于 2016-09-21 17:37
项链60%TLE。。2.6
点赞 回复 分享
发布于 2016-09-21 17:31
同求思路
点赞 回复 分享
发布于 2016-09-21 17:18
Ac 0.8 AC 急着上厕所,不折腾了
点赞 回复 分享
发布于 2016-09-21 17:10
AC 2.4 1 0.8不tle了,但是还有0.2不知为何 0.6 考虑了回跳,但依然0.6不知为何
点赞 回复 分享
发布于 2016-09-21 17:09

相关推荐

求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务