godperkz @ 2018-08-14 17:46:07
using namespace std;
long int k[5020][2];
int main()
{
int n,s,a,b,ans=0,sum=0;
cin>>n>>s;
cin>>a>>b;
int t=a+b;
for(int i=1;i<=n;i++)
cin>>k[i][0]>>k[i][1];
for (int i=n;i>=2;i--)
for (int j=1;j<=n-1;j++)
{
if(k[j][1]>k[j+1][1])
{
swap(k[j][1],k[j+1][1]);
swap(k[j][0],k[j+1][0]);
}
}
for(int i=1;i<=n;i++)
cout<<k[i][0]<<" "<<k[i][1]<<" ";
int i=1;
while(ans<=s&&i<=n)
{
if(k[i][0]<=t)
{
ans+=k[i][1];
sum++;
}
i++;
}
cout<<sum<<endl;
}
by godperkz @ 2018-08-15 12:40:18
@花落丶宸星
#include<algorithm>
using namespace std;
long int k[5020][2];
int main() {
int n,s,a,b,ans=0,sum=0;
cin>>n>>s;
cin>>a>>b;
int t=a+b;
for(int i=1;i<=n;i++)
cin>>k[i][0]>>k[i][1];
for (int i=n;i>=2;i--)
for (int j=1;j<=n-1;j++)
{ if(k[j][1]>k[j+1][1])
{ swap(k[j][1],k[j+1] [1]); swap(k[j] [0],k[j+1][0]); }
}
int i=1;
while(ans<=s&&i<=n) {
if(k[i][0]<=t)
{
ans+=k[i][1];
sum++;
}
i++;
}
cout<<sum<<endl;
}
by godperkz @ 2018-08-15 12:41:45
@花落丶宸星 中间那行输入代码是我源代码里调试用的,忘了去掉了。我的思路就是先对数据进行快排,然后再计数已使用体力值,并且每个符合条件的苹果sum++。 但我的代码第四个数据总是过不了
by 花落丶宸星 @ 2018-08-15 12:43:45
我看过数据了。。。
0 0
0 0
by 花落丶宸星 @ 2018-08-15 12:43:49
@godperkz
by 花落丶宸星 @ 2018-08-15 12:44:47
我还是比较喜欢用结构体。。二维数组不太爱用除了打Pascal的时候
by 花落丶宸星 @ 2018-08-15 12:46:25
@godperkz 我也没看到你用sort啊。。。
by godperkz @ 2018-08-15 14:59:33
@花落丶宸星 不是很习惯用结构体 而且为什么我0 0 0 0过不了 这真令人头大
by 花落丶宸星 @ 2018-08-15 15:01:03
你可以试试我发给你的代码
by 花落丶宸星 @ 2018-08-15 15:01:24
@godperkz 我的代码0 0 0 0过了
by 1tvvdsg @ 2018-08-19 15:39:02
哈哈哈哈 因为 0 0 0 0 的话
你是错的
我也是这样的
你可以选择加一个特判