华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1137|回复: 3
打印 上一主题 下一主题

P1094 纪念品分组

[复制链接]

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
跳转到指定楼层
楼主
发表于 2018-7-20 16:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
回复

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
沙发
 楼主| 发表于 2018-7-20 16:17:23 | 只看该作者
  1. #include<iostream>
  2. #include<cmath>
  3. #include<algorithm>
  4. using namespace std;
  5. int w,n,a[30010],ans;
  6. int i,j;
  7. int main()
  8. {
  9.     cin>>w;
  10.     cin>>n;
  11.     for(i=1;i<=n;i++)
  12.     cin>>a[i];
  13.     ///cout<<endl;
  14.     sort(a+1,a+n+1);
  15.     /*for(i=1;i<=n;i++)
  16.     cout<<a[i]<<" ";
  17.     cout<<endl;*/
  18.     i=n;
  19.     for(j=1;j<=i;j++)
  20.     {
  21.         while(a[j]+a[i]>w)
  22.         {i--;ans++;}
  23.         ans++;
  24.             i--;
  25.     }
  26.     cout<<ans;
  27.     return 0;
  28. }
复制代码
回复 支持 反对

使用道具 举报

9

主题

158

帖子

470

积分

华一学生

积分
470
QQ
板凳
发表于 2018-8-29 16:00:36 | 只看该作者
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int w,n,ans;
  5. int p[30001],b[30001];
  6. int main()
  7. {
  8.     cin>>w>>n;
  9.     for(int i=1; i<=n; i++)
  10.     {
  11.         cin>>p[i];
  12.         b[i]++;
  13.     }
  14.     sort(p+1,p+n+1);
  15.     for(int i=1; i<=n; i++)
  16.     {
  17.         if(b[i])
  18.         {
  19.             b[i]--;
  20.             for(int j=n; j>i; j--)
  21.                 if(b[j]&&p[j]<=w-p[i])
  22.                 {
  23.                     b[j]--;
  24.                     break;
  25.                 }
  26.             ans++;
  27.         }
  28.     }
  29.     cout<<ans;
  30.     return 0;
  31. }
复制代码
回复 支持 反对

使用道具 举报

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
地板
发表于 2018-10-21 20:46:44 | 只看该作者
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. #define FOR(i,n,m) for(int i=n;i<=m;i++)
  5. int w,n,a[30010],i,j,ans;
  6. int main()
  7. {
  8.     cin>>w>>n;
  9.     FOR(i,1,n) cin>>a[i];
  10.     sort(a+1,a+n+1);
  11.     int i=1,j=n;
  12.     while(i<=j)
  13.     {
  14.         if(a[i]+a[j]<=w)i++;
  15.         ans++;j--;
  16.     }
  17.     cout<<ans;
  18.     return 0;
  19. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-26 01:54 , Processed in 0.692217 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表