科大讯飞笔试7.29

第一题100%,题目忘了,不过大家第一题好像都做出来了;
第二题60%,数组距离。以两个数组命名为an和bn,取每个|an(i)-bn(i)|与|an(i)+bn(i)|中的最小值,想加,最后通过60%。后来想是不是数值超过整数范围的问题,按这个思路改进了一下,然而并没有成功。
第三题100%,禁点。这题也比较简单,按题设,在不考虑禁点的情况下,和为s的组合有s-1个,再依据给出的禁点,减掉不成立的组合即可。
全部评论
第二题改成long就过了,第三题一样的思路
1 回复 分享
发布于 2023-07-29 21:34 陕西
弱弱问一下在哪看完成度啊
点赞 回复 分享
发布于 2023-07-29 21:56 陕西
第三题只过了20%,考虑了禁着点可能大于s,但是以下代码报错 段错误,请帮忙看下哪里出问题了? int main() { int n; std::cin >> n; std::vector<int> a(n); std::unordered_set<int> hash; for (int i = 0; i < n; ++i) { int v; std::cin >> v; a[i] = v; hash.emplace(v); } int s; std::cin >> s; long long res = s - 1; for (int i = 0; i < n; ++i) { if (a[i] >= s) continue; if (hash.count(s - a[i])) --res; else res -= 2; } printf("%lld", res); }
点赞 回复 分享
发布于 2023-07-29 21:41 陕西
第二题是数据范围的问题,改成long。请教一下第三题,减掉不成立的组合是什么意思。我的做法是排序a数组,遍历a数组,然后统计a中小于s的个数k,答案是s-1-2*k,这样做有什么问题?
点赞 回复 分享
发布于 2023-07-29 21:33 湖北

相关推荐

评论
2
15
分享

创作者周榜

更多
牛客网
牛客企业服务