• 组队竞赛(int溢出问题)


    目录

    一、题目

    二、代码

    (一)没有注意int溢出

    (二)正确代码

    1. long long sum=0

    2. #define int long long

    3. 使用现成的sort函数


    一、题目

    二、代码

    (一)没有注意int溢出

     

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. void QuickSort(vector<int>&a,int begin,int end)//快排
    6. {
    7. if(begin>=end)
    8. return;
    9. int left = begin;
    10. int right = end;
    11. int keyi = left;//基准值的下标
    12. while(left//降序排列
    13. {
    14. while(left=a[keyi])
    15. {
    16. --right;
    17. }
    18. while(left
    19. {
    20. ++left;
    21. }
    22. swap(a[left],a[right]);
    23. }
    24. swap(a[left],a[keyi]);
    25. QuickSort(a,begin,left);
    26. QuickSort(a,left+1,end);
    27. }
    28. int main()
    29. {
    30. int n;
    31. cin>>n;
    32. vector<int>data(3*n,0);
    33. for(int i=0;i<3*n;i++)
    34. {
    35. cin>>data[i];
    36. }
    37. QuickSort(data,0,3*n-1);
    38. int k=1;
    39. int sum=0;
    40. for(int i=3*n-2;i>=0&& k<=n;i-=2)
    41. {
    42. sum+=data[i];
    43. k++;
    44. }
    45. cout<
    46. return 0;
    47. }

    (二)正确代码

    1. long long sum=0

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. void QuickSort(vector<int>&a,int begin,int end)//快排
    6. {
    7. if(begin>=end)
    8. return;
    9. int left = begin;
    10. int right = end;
    11. int keyi = left;//基准值的下标
    12. while(left//升序排列
    13. {
    14. while(left=a[keyi])//右边找小
    15. {
    16. --right;
    17. }
    18. while(left//左边找大
    19. {
    20. ++left;
    21. }
    22. swap(a[left],a[right]);
    23. }
    24. swap(a[left],a[keyi]);
    25. QuickSort(a,begin,left);
    26. QuickSort(a,left+1,end);
    27. }
    28. int main()
    29. {
    30. int n;
    31. cin>>n;
    32. vector<int>data(3*n,0);
    33. for(int i=0;i<3*n;i++)
    34. {
    35. cin>>data[i];
    36. }
    37. QuickSort(data,0,3*n-1);
    38. int k=1;
    39. long long sum=0;
    40. for(int i=3*n-2;i>=0&& k<=n;i-=2)
    41. {
    42. sum+=data[i];
    43. k++;
    44. }
    45. cout<
    46. return 0;
    47. }

    2. #define int long long

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. #define int long long
    6. void QuickSort(vector<int>&a,int begin,int end)//快排
    7. {
    8. if(begin>=end)
    9. return;
    10. int left = begin;
    11. int right = end;
    12. int keyi = left;//基准值的下标
    13. while(left//升序排列
    14. {
    15. while(left=a[keyi])//右边找小
    16. {
    17. --right;
    18. }
    19. while(left//左边找大
    20. {
    21. ++left;
    22. }
    23. swap(a[left],a[right]);
    24. }
    25. swap(a[left],a[keyi]);
    26. QuickSort(a,begin,left);
    27. QuickSort(a,left+1,end);
    28. }
    29. signed main()
    30. {
    31. int n;
    32. cin>>n;
    33. vector<int>data(3*n,0);
    34. for(int i=0;i<3*n;i++)
    35. {
    36. cin>>data[i];
    37. }
    38. QuickSort(data,0,3*n-1);
    39. int k=1;
    40. int sum=0;
    41. for(int i=3*n-2;i>=0&& k<=n;i-=2)
    42. {
    43. sum+=data[i];
    44. k++;
    45. }
    46. cout<
    47. }

    3. 使用现成的sort函数

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. int main()
    6. {
    7. int n;
    8. cin>>n;
    9. vector<int>data(3*n,0);
    10. for(int i=0;i<3*n;i++)
    11. {
    12. cin>>data[i];
    13. }
    14. sort(data.begin(),data.end());//默认升序排列
    15. int k=1;
    16. long long sum=0;
    17. for(int i=3*n-2;i>=0&& k<=n;i-=2)
    18. {
    19. sum+=data[i];
    20. k++;
    21. }
    22. cout<
    23. return 0;
    24. }

  • 相关阅读:
    Single Threaded Execution
    《凤凰架构》读书笔记 —— 本地事务如何实现隔离性?
    Vue.extend使用场景
    总结:OpenStack笔记
    Nvidia的DeepStream通过配置文件中sink插件,快速进行视频数据的保存
    Harbor仓库概述
    缓存一致性MESI与内存屏障
    CentOS 7 安装指定版本的python环境
    小C的数组(array)
    Transformer上进行递归
  • 原文地址:https://blog.csdn.net/m0_63783532/article/details/133215902