2 条题解

  • 0
    @ 2023-9-20 21:55:49
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long h[1000001];//储存树的高度
    long long N, M, L, mid;
    int main()
    {
    	int i;
    	cin >> N >> M;//输入树的数量N和所需的木材总长度
    	for (i = 1; i <= N; i++)
    	{
    		cin >> h[i];
    	}
    	sort(h, h + N + 1);//将所有树木进行排序,以便找到最高的树
    	L = 1;//左边界
    	long long max = h[N];//右边界
    	while (L <= max)
    	{
    		mid = (L + max) / 2;
    		long long x = 0;//每个测试案例中木材的总长度
    		for ( i = 1; i <= N; i++)
    			if (h[i] > mid)
    				x += h[i] - mid;
    		if (x < M)//测试案例中的木材总长度小于需求量
    			max = mid - 1;//右边界改变,降低锯片高度以增加所砍木材总长度
    		else//超过则改变左边界,以提高锯片高度
    			L = mid + 1;
    	}
    	cout << max;//输出锯片的最大高度
    	return 0;
    }
    
    
    
    • -5
      @ 2023-2-28 21:10:58
      #include<bits/stdc++.h>
      using namespace std;
      struct zzh{
      	char xm[100];
      	int xb;
      	int n;
      	int y;
      	int r;
      };
      zzh a[1000];
      bool hzz(zzh f,zzh g)
      {
      	if(f.n>g.n)
      	{
      		return 0;
      	}
      	if(f.n==g.n)
      	{
      		if(f.y>g.y)
      		{
      			return 0;
      		}
      		if(f.y==g.y)
      		{
      			if(f.r>g.r)
      			{
      				return 0;
      			}
      		}
      		return 1;
      	}
      	return 1;
      }
      int main()
      {
      	cout<<"请输入一共有多少人"<<endl; 
      	int n;
      	cin>>n;
      	cout<<"输入每个人的 姓名 出生年份 出生月份 出生日"<<endl;
      	for(int i=1;i<=n;i++){
      		cout<<"第"<<i<<"个人:";
      		cin>>a[i].xm>>a[i].n>>a[i].y>>a[i].r; 
      	}
      	sort(a+1,a+n+1,hzz);
      	cout<<"排序结果"<<endl;
      	for(int i=1;i<=n;i++)
      	{
      		cout<<"第"<<i<<"大的:"; 
      		cout<<a[i].xm<<" "<<a[i].n<<" "<<a[i].y<<" "<<a[i].r<<endl;
      	}
      	return 0;
      } 
      
      
      • 1

      信息

      ID
      904
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      191
      已通过
      32
      上传者