- 纪念品分组
- 2014-07-16 15:09:33 @
#include<cstdio>
#include<algorithm>
int n,w,ans=0,p[30000];
using namespace std;
int main()
{
scanf("%d",&w);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&p[i]);
sort(p+1,p+n+1);
int i=1,j=n;
while(i<=j)
{
if(i==j)
{
ans++;break;}
if(p[i]+p[j]<=w)
{
ans++;i++;j--;
}
else
{
while(p[i]+p[j]>w)
{
ans++;j--;
}
}
}
printf("%d\n",ans);
return 0;
}
3 条评论
-
SZZXxnw LV 7 @ 2016-09-13 18:42:02
被楼主提醒了下- -用了个sort过了= =
#include<bits/stdc++.h>
using namespace std;
bool use[30000];
int main(){
int w,n,ans=0;
cin>>w>>n;
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
for(int i=0;i<n;i++){
if(!use[i]){
use[i]=true;
for(int j=n-1;j>0;j--){
if(!use[j]&&w-a[j]-a[i]>=0){
use[j]=true;
break;
}
}
ans++;
}
}
cout<<ans;
} -
2016-09-13 18:36:01@
我也是最后一个点:
#include<bits/stdc++.h>
using namespace std;
bool use[30000];
int main(){
int w,n,ans=0;
cin>>w>>n;
int a[n];for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++){
int waj=30001,temp=0;
if(!use[i]){
use[i]=true;
for(int j=0;j<n;j++){
if(!use[j]&&w-a[j]-a[i]>=0&&w-a[j]-a[i]<waj){
temp=j;
waj=w-a[j]-a[i];
}
}
use[temp]=true;
ans++;
}
}
cout<<ans;
} -
2014-07-16 15:11:43@
我看过数据了,输出一模一样的啊……
- 1