ChengZe @ 2019-01-05 01:08:35
第一份代码#3,5RE,第二份代码AC,差别是cmp的判断,但蒟蒻不知道为什么会这样(有没有加等于的问题) 其中a.b指力气,a.a指高度
#include <bits/stdc++.h>
using namespace std;
struct apple{
int a,b;
}a[5001];
bool cmp(apple a,apple b){
return a.b<=b.b;
}
int main()
{
int n,s,ans=0;cin>>n>>s;
int aa,b;cin>>aa>>b;
for(int i=1;i<=n;i++)cin>>a[i].a>>a[i].b;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(s>=a[i].b&&a[i].a<=aa+b){
ans++;
s-=a[i].b;
}
if(s<0)break;
}
cout<<ans;
return 0;
}
---第二份---
#include <bits/stdc++.h>
using namespace std;
struct apple{
int a,b;
}a[5001];
bool cmp(apple a,apple b){
return a.b<b.b;
}
int main()
{
int n,s,ans=0;cin>>n>>s;
int aa,b;cin>>aa>>b;
for(int i=1;i<=n;i++)cin>>a[i].a>>a[i].b;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(s>=a[i].b&&a[i].a<=aa+b){
ans++;
s-=a[i].b;
}
if(s<0)break;
}
cout<<ans;
return 0;
}
by GNAQ @ 2019-01-05 07:27:23
std::sort()
要求你 compare
函数返回 true
是当且仅当传进去的第一个元素严格小于第二个元素啊。。要不然你想象一下,所谓的“相等”也被视作小于,那多个“相等”元素,或者全是“相等”元素的序列不就一直在交换了,这可还行?
by disangan233 @ 2019-01-05 08:13:22
@GNAQ orz
by ChengZe @ 2019-01-05 21:54:34
@GNAQ orz