题解 | #得分最大#

得分最大

http://www.nowcoder.com/practice/ab26d020c8784414b8642b63741eddb3

  1. 贪心算法,各种情况下都是对自己为有利。
  2. 其他技巧看注释。
#include <bits/stdc++.h>
using namespace std;

//函数只能在外部定义
 bool cmp(int i, int j){
        return i>j;
 }

int main(){

    int n;
    long ans = 0;
    cin>>n;
    int a[100015],b[100015];//技巧,申请一个非常大得数组。

    for(int i = 1;i <= n;i++) cin>>a[i];//技巧。从一开始,第一个代表第一个小球
    for(int i = 1;i <= n;i++) cin>>b[i];

    //从大到小排序
    sort(a+1,a+1+n,cmp);//为什么要排序,因为贪心
    sort(b+1,b+1+n,cmp);//注意这个比较值得是比较元素得下标,额可以部分比较哦
    int i = 1;
    int j = 1;

    // 谁的堆拿完谁获胜
    while(i<=n||j<=n){//因为数组已经排序贪心过了
        if(a[i]>b[j]) ans+= a[i++];//那下一个求
        else j++; //贪心,否则就把b的第一个给扔掉
        //然后对方
        if(a[i]<b[j]) ans -= b[j++];
        else i++;

    }

    cout<<ans<<endl;

    return 0;
}
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务