求大佬指错

P1478 陶陶摘苹果(升级版)

林则徐左宗棠 @ 2018-08-21 20:46:07

萌新一个,最简单的思路,就ac了第四个点..

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,h=0,a,s,b,x[281],y[101],ans=0;
    cin>>n>>s;
    cin>>a>>b;
    for(int i=0;i<=n;i++)
    {
     cin>>x[i]>>y[i];
    }    
     h=a+b;
    for(int i=0;i<=n;i++)
    {
     if(h>=x[i])
      if(s>=y[i]){
      ans++;
      s-=y[i];
  }
    }
    cout<<ans;
    return 0;
}

by 捻红尘似水 @ 2018-08-21 20:55:08

for里i从1开始


by 林则徐左宗棠 @ 2018-08-21 20:55:12

@捻红尘似水 i=1的时候也这样


by Khan_ @ 2018-08-21 20:55:33

@黑水玄蛇真棒 咋排序了?


by 林则徐左宗棠 @ 2018-08-21 20:55:48

i=1是我瞅了眼题解看到的


by Khan_ @ 2018-08-21 20:55:54

好像没看到排序


by Dr_Gears @ 2018-08-21 20:56:01

@黑水玄蛇真棒 那就别做这道题了,去做原题P1046。


by 林则徐左宗棠 @ 2018-08-21 20:56:06

@Khan_ 您这个排序是啥意思啊..


by 林则徐左宗棠 @ 2018-08-21 20:56:34

@竹窝呵呵 做的新手村,1046早ac了,在做1-7


by Khan_ @ 2018-08-21 20:57:13

@黑水玄蛇真棒 自己看吧

#include <iostream>
using namespace std;
int n,strong;
int chair,hand,total,ans;
int applehigh[100001],need[100001];
void qsort(int l,int r)
{
int i,j,mid,p;
i=l;j=r;   
mid=need[(l+r)/2];                       //将当前序列在中间位置的数定义为分隔数
do
{
while (need[i]<mid)  {i++;}         //在左半部分寻找比中间数大的数
while (need[j]>mid)  {j--;}           //在右半部分寻找比中间数小的数
if (i<=j)
{                                     //若找到一组与排序目标不一致的数对则交换它们
p=need[i];need[i]=need[j];need[j]=p;
p=applehigh[i];applehigh[i]=applehigh[j];applehigh[j]=p;
i++;j--;                                    //继续找
}
}while(i<=j);                           //注意这里要有等号
if (l<j) qsort(l,j);                     //若未到两个数的边界,则递归搜索左右区间
if (i<r) qsort(i,r);
}

int main()
{
     scanf("%d%d",&n,&strong);
     scanf("%d%d",&chair,&hand);
     total=chair+hand;
     for(int i=1;i<=n;i++)
     scanf("%d%d",&applehigh[i],&need[i]);
     //cout<<endl;
     qsort(1,n);
     //for(int i=1;i<=n;i++)
     //cout<<applehigh[i]<<' '<<need[i]<<endl;
     for(int i=1;i<=n;i++)
      {
        if(applehigh[i]<=total&&need[i]<strong)
        {
          ans++;strong-=need[i];//cout<<i<<' ';
    }
        else continue;
      }
      //cout<<endl;
      printf("%d",ans);
}

by 捻红尘似水 @ 2018-08-21 20:57:35

数组开小了 n<=5000 x,y也要开到5000


上一页 | 下一页