华为4月13晚笔试

第二题代码。过了25%,不知道哪里错了,求个大佬帮忙看看!!!!
// we have defined the necessary header files here for this problem.
// If additional header files are needed in your program, please import here.
#include<bits/stdc++.h>

using namespace std;
int main()
{
    int n;
    cin >> n;
    int ans = 0;
    vector<pair<int, int>> tmp;
    for(int i = 0; i < n; ++i){
        int a, b;
        cin >> a >> b;
        tmp.push_back(make_pair(a, b));
    }
    sort(tmp.begin(), tmp.end(), [](pair<int, int>& a, pair<int, int>& b){ return a.first == b.first ? a.second > b.second : a.first < b.first; });
    
    int start = 0;
    for(int i = 1; i <= 7 * 105 && start < n; ++i){
        for(int j = start; j < n; ++j){
            if(tmp[j].first >= i){
                ans += tmp[j].second;
                start = j + 1;
                break;
            }
        }
    }
    cout << ans;
    return 0;
}



#华为笔试##华为##实习##笔试题目#
全部评论
你的做法有特例: 5 1 7 1 5 2 89 2 100 3 6 你的输出是7+100+6,实际是89+100+6
3 回复 分享
发布于 2022-04-13 22:19
因为这***出题人的 105 是 10^5 次方,106是 10^6次方
2 回复 分享
发布于 2022-04-13 21:38
思路有问题,因为比如2有权值6和7,3有权值8和9,这种情况我应该在做3的两个任务,但是按照你这个做的是2的7和3的9,权值变低了。
1 回复 分享
发布于 2022-04-13 22:20
我也是
点赞 回复 分享
发布于 2022-04-13 21:37
请问华为机考不能用python嘛,感觉看了好多帖子都是c++😥
点赞 回复 分享
发布于 2022-04-14 08:50
不会C++,不过我也是排序贪心做的, 你可以考虑 1 1 2 3 2 4 这个例子,答案是7,但是我的方法是5
点赞 回复 分享
发布于 2022-04-14 08:58
菜鸡尝试了一下,仅供参考: #include <bits/stdc++.h> using namespace std; int N; struct num{ int time; int sorce; friend bool  operator < (num a,num b) {      if(a.sorce==b.sorce)      {          return a.time < b.time;      }      return a.sorce > b.sorce; } }; int main() {     scanf("%d",&N);     if(N==0)     {         return 0;     }     vector<num> arr;     for(int i=0;i<N;i++)     {         int t=0,s=0;         scanf("%d%d",&t,&s);         num n;         n.time=t;         n.sorce=s;         arr.push_back(n);     }     sort(arr.begin(),arr.end());     int ans = arr[0].sorce;     int cur_time = 2;     for(int i=1;i<N;i++)     {         if(arr[i].time >= cur_time)         {             ans+= arr[i].sorce;             cur_time++;         }     }     printf("%d",ans);     return 0; }
点赞 回复 分享
发布于 2022-04-14 10:36
思路错了,用优先队列,sla小于队列长度入队,等于队列长度且大于队首,先出队再入队
点赞 回复 分享
发布于 2022-04-14 18:12
老哥有第一题第三题的代码吗,能方便分享下吗
点赞 回复 分享
发布于 2022-04-15 22:52

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
评论
1
4
分享
牛客网
牛客企业服务