求助大佬555只过#4

P1478 陶陶摘苹果(升级版)

Drunkyous @ 2019-07-21 18:04:42

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,s,a,b,i,j,ans=0,t1=0,t2=0;
    int x[5001],y[5001];
    bool flag;
    cin>>n>>s>>a>>b;
    a+=b;
    for(i=0;i<n;i++)
      cin>>x[i]>>y[i];
    for(i=n-1;i>=1;i--)
    {
        flag=true;
        for(j=0;j<i;j++)
        {
          if(y[j]>y[j+1])
          {
            swap(x[j],x[j+1]);
            swap(y[j],y[j+1]);
            x[j]=t1,y[j]=t2;
            flag=false;
           }
        }
        if(flag==true)break;
        for(i=1;i<=n;i++)
        if(x[i]<=a&&y[i]<=s)
        {
            s-=y[i];
            ans++;
        }
    }
    cout<<ans;
    return 0;
}

没找到错..emm


by Drunkyous @ 2019-07-21 21:25:24

捞一下


by 朝歌九月 @ 2019-07-26 19:07:53

因为第四个点是0 0 0 0的数据…所以你当然能过了。不过小伙子你样例都没过歪,建议重新检查检查。


by 朝歌九月 @ 2019-07-26 19:15:19

冒泡排序是一个不稳定的排序方式,你可以试一下在你的ans++前面输出一下s和x[i].y[i],我复制了一下你的程序,样例输出出来中间间隔了很多零。就是说你的冒泡排序中产生了一堆不必要的零数组。(总而言之就是排序写错了)建议换结构体和sort写这道题更方便些~不过整体思路应该是没问题的啦。


by lcyxds @ 2019-08-07 11:12:50

为什么我只炸4


by USS_Enterprise @ 2019-08-13 12:32:04

@朝歌九月 冒泡排序是一个稳定的排序,(我用冒泡过的)


|