5.14奇安信C++笔试
#奇安信#
第一题 100%
第二题 50%
X感觉写的很对,为什么错了呢,有无大佬帮忙看看X
感谢评论区大佬给出错误原因,已经搞懂了
class Solution {
public:
vector<long long> vec;
bool check(long long mid)
{
priority_queue<long long> q;
for(int i = 0; i < 5; i ++) q.push(mid);
for(auto x : vec)
{
long long t = q.top();
q.pop();
q.push(t - x);
}
if(q.top() > 0) return false;
else return true;
}
int maxTime(vector<int>& bat) {
for(auto x : bat) vec.push_back(x);
sort(vec.begin(), vec.end(), greater<long long>());
int n = vec.size();
long long l = 0, r = vec[0] * n / 5;
while(l < r)
{
long long mid = (l + r + 1) / 2;
if(check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
};
第一题 100%
第二题 50%
X感觉写的很对,为什么错了呢,有无大佬帮忙看看X
感谢评论区大佬给出错误原因,已经搞懂了
class Solution {
public:
vector<long long> vec;
bool check(long long mid)
{
priority_queue<long long> q;
for(int i = 0; i < 5; i ++) q.push(mid);
for(auto x : vec)
{
long long t = q.top();
q.pop();
q.push(t - x);
}
if(q.top() > 0) return false;
else return true;
}
int maxTime(vector<int>& bat) {
for(auto x : bat) vec.push_back(x);
sort(vec.begin(), vec.end(), greater<long long>());
int n = vec.size();
long long l = 0, r = vec[0] * n / 5;
while(l < r)
{
long long mid = (l + r + 1) / 2;
if(check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
};
全部评论
就是每次不能把电用光,每次用一分钟然后重新排序,100,100,100,100,95,10 你这样计算结果是100, 但每次不用光电量, 15,15,15,15,10,10->14,14,14,14,9,10 然后不断用新的最大值替换,可以得到101
我也是,我还发现是原题。。。
第一题咋写啊。。
我也是50%
第二题我也是百分之五十
题主,请问一下,能不能发一下第一题的过程?
啥时候投的呀,我5号投的现在还没有消息😭
我知道错哪了,但不知怎么改,你输入15个100,输出结果是200,但结果是300
相关推荐

点赞 评论 收藏
分享
06-02 19:23
华南理工大学 Java 
点赞 评论 收藏
分享