洛谷 P1094 纪念品分组

如果行号影响了复制,请点击代码框左上角的按钮。

P1094 纪念品分组

先按价格对纪念品排序(这里是从大到小),然后从两端向中心开始配对,有两个变量i和j,表示正在处理的两个纪念品编号,开始时i=1,j=n,如果a[i]+a[j]>w则第i贵的纪念品无法与任何较小的纪念品配对,那么该纪念品单独一组,i++,否则第i贵的纪念品可以和第j便宜的纪念品一组,因此i++,j--,两种情况都使ans++,而i=j时说明纪念品分组完成,于是退出。

 

var a:array[1..30010] of integer;
i,w,n,t,x,ans,j:longint;    boo:boolean;

procedure qsort(l,r:longint);{从大到小排序}
var i,j,k,temp:longint;
begin
  i:=l;
  j:=r;
  k:=a[(i+j) div 2];
  repeat
    while a[i]>k do inc(i);
    while a[j]<k do dec(j);
    if i<=j
      then
      begin
        temp:=a[i];
        a[i]:=a[j];
        a[j]:=temp;
        inc(i);
        dec(j);
      end;
  until i>j;
  if i<r then qsort(i,r);
  if j>l then qsort(l,j);
end;
begin
  readln(w);
  readln(n);
  for i:=1 to n do
    readln(a[i]);
  qsort(1,n);
  i:=1;j:=n;
  while i<=j do
  begin
    inc(ans);
    if i=j then break;
    if a[i]+a[j]<=w
      then dec(j);
    inc(i);
  end;
  writeln(ans);
end.

 

posted @   hehe_54321  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
AmazingCounters.com
点击右上角即可分享
微信分享提示