简易贪心+heap

注意要用链表

 type link=^node;
     node=record
       loc:longint;
       next:link;
     end;
     point=record
       loc,num:longint;
     end;
var w,b:array[..] of link;
    heap:array[..] of point;
    n,k,s,x,i,j,y,t,ans:longint;
    p,q:link; function min(a,b:longint):longint;
  begin
    if a>b then exit(b) else exit(a);
  end; procedure swap(var a,b:point);
  var c:point;
  begin
    c:=a;
    a:=b;
    b:=c;
  end; procedure up(i:longint);
  var j:longint;
  begin
    j:=i shr ;
    while j> do
    begin
      if heap[i].loc<heap[j].loc then
      begin
        swap(heap[i],heap[j]);
        i:=j;
        j:=i shr ;
      end
      else break;
    end;
  end; procedure sift(i:longint);
  var j:longint;
  begin
    j:=i shl ;
    while j<=k do
    begin
      if (j+<=k) and (heap[j].loc>heap[j+].loc) then inc(j);
      if heap[i].loc>heap[j].loc then
      begin
        swap(heap[i],heap[j]);
        i:=j;
        j:=i shl ;
      end
      else break;
    end;
  end; begin
  readln(n,k);
  for i:= to k do
  begin
    read(s);
    w[i]:=nil;
    for j:= to s do
    begin
      read(x);
      new(p);
      p^.next:=nil;
      p^.loc:=x;
      if w[i]=nil then
      begin
        w[i]:=p;
        q:=p;
      end
      else begin
        q^.next:=p;
        q:=p;
      end;
    end;
    b[i]:=w[i];
    readln;
  end;
  y:=;
  for i:= to k do
  begin
    t:=t+;
    heap[t].loc:=b[i]^.loc;
    heap[t].num:=i;
    up(t);
    if heap[t].loc>y then y:=heap[t].loc;
    b[i]:=b[i]^.next;
  end;
  ans:=y-heap[].loc;
  while true do
  begin
    x:=heap[].num;
    if b[x]=nil then break
    else begin
      heap[].loc:=b[x]^.loc;
      if y<b[x]^.loc then y:=b[x]^.loc;
      b[x]:=b[x]^.next;
      sift();
      ans:=min(ans,y-heap[].loc);
    end;
  end;
  writeln(ans);
end.

bzoj1293的更多相关文章

  1. BZOJ1293 [SCOI2009]生日礼物 离散化

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1293 题意概括 彩珠有N个,分为K种.每一个彩珠有一个对应的坐标.坐标上可以没有彩珠,多个彩珠也可 ...

  2. 【BZOJ1293】[SCOI2009]生日礼物(单调队列)

    [BZOJ1293][SCOI2009]生日礼物(单调队列) 题面 BZOJ 洛谷 题解 离散之后随便拿单调队列维护一下就好了. #include<iostream> #include&l ...

  3. bzoj1293: [SCOI2009]生日礼物

    单调队列 用一个堆维护目前每个颜色在里面的点,每回取出队首点,并更新答案.一旦哪个颜色的点都被用完,跳出循环. #include<cstdio> #include<algorithm ...

  4. bzoj1293[SCOI2009]生日礼物 尺取法

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2838  Solved: 1547[Submit][Stat ...

  5. bzoj1293 生日礼物

    Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩 ...

  6. BZOJ1293:[SCOI2009]生日礼物——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1293 https://www.luogu.org/problemnew/show/P2564#sub ...

  7. BZOJ1293 [SCOI2009]生日礼物 【队列】

    题目 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一 ...

  8. 【堆】bzoj1293 [SCOI2009]生日礼物

    考虑poj3320尺取法的做法,与此题基本一样,但是此题的 位置 的范围到2^31 尺取法不可. 将每种珠子所在的位置排序. 每种珠子要维护一个指针,指到已经用到这个种类的哪个珠子. 所以尺取法用堆优 ...

  9. BZOJ1293:[SCOI2009]生日礼物

    浅谈队列:https://www.cnblogs.com/AKMer/p/10314965.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

随机推荐

  1. json数据与字符串相互转化的例子

    json与字符串之间的转换,本文分享一个小例子.   json转成string[需要引用json2.js文件]:  var arr=[{id:'id',name:'Spring'},{id:'id2' ...

  2. Vi 几个实用的命令

    vi有三种工作模式:指令模式.编辑模式和命令模式. 我们从打开vi说起,这样可以确定下学习环境,也方便学习者实践.打开vi,当前模式即为指令模式,此时可以按a, i, 或o进入编辑模式,或按:(冒号) ...

  3. 关于Javascript"数组"那点事儿

    记住Javascript里没有“数组”忘掉一切吧,骚年...一切都是对象:书中还细分了下简单类型和对象类型基本类型:typeof xxx => "number"数字,&quo ...

  4. owa Your request can't be completed right now. Please try again later.

    Your request can't be completed right now. Please try again later.

  5. 使用自定义任务审批字段创建 SharePoint 顺序工作流

    http://msdn.microsoft.com/zh-cn/library/hh824675(v=office.14).aspx#odc_sp14_ta_CreatingSPSeqWorkflow ...

  6. velocity语法

    1.声明变量 #set($var = XXX) 右边可以是以下的内容 Variable reference String literal Property reference Method refer ...

  7. ios 保存本地数据的方法

    1. NSString *path = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:@"plist" ...

  8. ionicPopup弹出列表选择对话框

    //显示vm.selectWarehouse = function() { vm.popupForWarehouse = $ionicPopup.show({ template: '<div c ...

  9. 基于局部敏感哈希的协同过滤推荐算法之E^2LSH

    需要代码联系作者,不做义务咨询. 一.算法实现 基于p-stable分布,并以‘哈希技术分类’中的分层法为使用方法,就产生了E2LSH算法. E2LSH中的哈希函数定义如下: 其中,v为d维原始数据, ...

  10. 关于delete和delete[]

    [精彩] 求问delete和delete[] 的区别??http://www.chinaunix.net/jh/23/311058.html C++告诉我们在回收用 new 分配的单个对象的内存空间的 ...