2 条题解

  • 0
    @ 2024-3-12 16:28:15

    只需要输出最轻的和最重的即可:

    #include <bits/stdc++.h>
    using namespace std;
    int n,a[110000];
    bool cmp (int x,int y) {return x>y;}
    int main() {
    	cin>>n;
    	for (int i=1;i<=n;i++) cin>>a[i];
    	sort (a+1,a+1+n,cmp);
    	cout<<a[1]<<" "<<a[n];
    	return 0;
    }
    
    • 0
      @ 2022-6-21 12:41:17

      【问题描述】

      有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。 这道题目可以不用2分,因为通过“则每个月都必须找出最轻和最重的金块”这句话,我们完全可以用快排。

      代码如下:

      #include <iostream> #include <bits/stdc++.h> using namespace std; long long n,a[1000000]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n);//将所有的金块重量进行排序。 cout<<a[n]<<' '<<a[1];//a[n]指最大的金块重量,a[1]指排序后最轻的金块重量。 return 0; }

      • 1

      金块问题(gold)(使用二分法)

      信息

      ID
      81
      时间
      1000ms
      内存
      256MiB
      难度
      1
      标签
      (无)
      递交数
      64
      已通过
      44
      上传者