6 solutions

  • 1
    @ 2021-10-17 19:30:11

    题解

    这个题看似属于分开看挺难,整体看就还好,先按照每天的僵尸都会收取,然后算出每只僵尸会吃脑子的总数,然后存入数组,在从小到大进行排序,最后从小到大加僵尸会吃的脑子总数和所拥有的脑子总数进行比较,保证吃的比拥有的少即可,顺便统计将是个数并输出,上代码:

    代码

    #include<bits/stdc++.h>
    #include<iostream>
    #include<algorithm>
    #include<iomanip>
    using namespace std;
    int x[100000000],y[17];
    char a[11],b[18];
    struct Main{
    	char a[20];
    	int cheng;
    }pp[300];
    int cmp(Main x,Main y){
    	return x.cheng>y.cheng;
    }
    int main()
    {
    	int n,m,tian,shu=0;
    	cin>>n>>m;
    	tian=n;
    	for(int i=1;i<=n;i++){
    		int jiang;
    		cin>>jiang;
    		x[i]=jiang*tian;//每只僵尸会吃脑子的总数
    		//cout<<x[i]<<endl;
    		tian--;
    	} 
    	sort(x+1,x+n+1);//排序
    	for(int i=1;i<=n;i++){
    		shu+=x[i];
    		if(shu>m){//比较吃的脑子和你的库存
    			cout<<i-1<<endl;
    			break;
    		}
    	}
    	if(shu<=m){
    		cout<<n<<endl;
    	} 
    	return 0;
    }
    

    Information

    ID
    25
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    # Submissions
    288
    Accepted
    66
    Uploaded By