40分困难户答案也对的上,求dalao找找问题

P1478 陶陶摘苹果(升级版)

·伍六柒 @ 2019-07-23 16:25:55

include<bits/stdc++.h>

using namespace std;

int main()

{

int n,s,a,b,p=0;
 cin>>n>>s;
 cin>>a>>b;
int q[n+1],w[n+1];
for(int i=0;i<n;++i)
{
    cin>>q[i]>>w[i];

}
for(int i=0;i<n-1;++i)
for(int j=i;j<n-1;++j)
{
if(w[j]>w[j+1])
{
    swap(w[j],w[j+1]);
    swap(q[j],q[j+1]);
}}
for(int i=0;i<n;++i)
{
       if(b+a>=q[i])

    {       s-=w[i];
        if(s<0){
        break;}
            else
        {
                p++;}

    }
}
cout<<p<<endl;
return 0;

}


by 斯蒂芬·库里30 @ 2019-07-23 16:30:22

希更展?用MD


by RebelAlliance @ 2019-07-23 16:31:05

不要用标题突出头文件的重要性


by Zenurik @ 2019-07-23 16:43:08

希更展?用MD


by wbz123 @ 2019-07-25 06:45:05

1.你不要在定义数组的时候用变量,这样会不合法,你就定义之后多的不用就可以了,题目说所有数据:n<=5000 a<=50 b<=200 s<=1000;你就定义q【5001】,w【1001】就可以; 2.排序你可以用结构体,定义苹果类型的结构体,按照所需力气排序 3.本题用贪心算法非常简单,你可以试试(我没看完你的代码)


by wbz123 @ 2019-07-25 07:04:26

我给你看下我的代码(刚试过,过了)


by wbz123 @ 2019-07-25 07:04:38

include<iostream>

include<algorithm>

using namespace std; struct apple{ int xi; int yi; }c[5001]; bool cmp(apple a,apple b) { return a.yi<b.yi; } int main() { int n,s,a,b,sum=0; cin>>n>>s>>a>>b; int high; high=a+b; for(int i=1;i<=n;i++) { cin>>c[i].xi>>c[i].yi; } sort(c+1,c+n+1,cmp); for(int i=1;i<=n;i++) { if(high>=c[i].xi&&s>=c[i].yi) { sum++; s-=c[i].yi; } } cout<<sum; return 0; }


by wbz123 @ 2019-07-25 07:05:03

(别抄)


by 信息学好好玩 @ 2019-08-04 13:20:09

#include<bits/stdc++.h>
using namespace std;
struct apple{
    int h;
    int cost;
    bool operator <(const apple &b)const{
        return b.cost>cost;
    }
}m[5001];
int n,s,a,b,num,len=0,cnt=0;
int main()
{
    scanf("%d%d%d%d",&n,&s,&a,&b);num=n;
    for(int i=1;i<=n;i++){
        scanf("%d%d",&m[i].h,&m[i].cost);
    }
    sort(m+1,m+n+1);
    while(s>=0&&len<=n&&n!=0){
        if(m[++len].h<=a+b){
            cnt++;
            num--;
            s-=m[len].cost;
            if(s<0)cnt--;
        }
    }
    cout<<cnt;
    return 0;
}

|