zoukankan      html  css  js  c++  java
  • [2013.10.11]饥饿的奶牛

    今天这么有意义的日子不写点儿什么浪费了是吧、、

    (...)

    http://dyssldezx.openjudge.cn/fornoip2013/10002/

    描述

     周老师为了让信息学奥赛班的学生能更好地投入到备战信息学竞赛中去,决定自己养若干奶牛,每天早上挤一些牛奶给学生每天喝,补充营养。但喂养奶牛也是一件麻烦事,每天晚上奶牛都要进食。由于条件比较简陋,并不一定所有奶牛都能吃到食物。奶牛的进食方式是这样的:周老师有m个食桶(1<=m<=2000),分别编号为1..m。这些食桶被按照编号排成一行。周老师将奶牛们分成若干组,每组奶牛总是呆在一起进食的,每组奶牛会提出要求——他们需要吃第start到第end桶中的食物。可能存在若干组奶牛都要吃同一个桶中的食物,从而就产生了冲突,这时周老师只能满足其中一组的要求,另一些组就只能饿肚子了。

      周老师当然不想让奶牛都饿肚子,所以他希望根据奶牛们提出的请求,满足其中一些组的要求,使得最多的食桶被奶牛食用。这个难题困扰着周老师,他希望得到你的帮助。

    输入第一行一个整数n,表示奶牛的组数。(1<=n<=1000)
    第2~n+1行,每行两个整数start和end,描述了一组奶牛提出的请求。输出一个整数,表示最多有多少个食桶可以被食用。样例输入

    3
    1 3
    7 8
    3 4
    

    样例输出

    5

    提示(满足第1组和第2组奶牛的要求,这样1~3号和7~8号这5个食桶可以被食用)

    (...)

    略**的题目修改、、、

    DP飘过、、、

    首先按照结束排序、、(你愿意按开始?随你便吧、、)

    然后、、、

    xx:=First(h[xx]=i) to Last(h[xx]=i);

    f[i]:=Max(f[h[xx]-1]+(Start[xx]-End[xx]+1));

    因为排过序了所以顺着加就行了,不用每次再搜、、

    上代码:

     1 Var
     2   f,h,t:Array[0..2001] of longint;
     3   i,j,n,m:longint;
     4   Tt,xx:longint;
     5   Iris:longint;
     6 Procedure qSort(l,r:longint);
     7   Var
     8     i,j,Mid,Tmp:longint;
     9   Begin
    10     i:=l;
    11     j:=r;
    12     Mid:=t[(l+r) Shr 1];
    13     Repeat
    14       While t[i]<mid do inc(i);
    15       While Mid<t[j] do Dec(j);
    16       if i<=j Then
    17         Begin
    18           Tmp:=t[j];
    19           t[j]:=t[i];
    20           t[i]:=Tmp;
    21           Tmp:=h[j];
    22           h[j]:=h[i];
    23           h[i]:=Tmp;
    24           Inc(i);
    25           Dec(j);
    26         End;
    27     Until i>j;
    28     if i<r Then qSort(i,r);
    29     if l<j Then qSort(l,j);
    30   End;
    31 Begin
    32   Read(n);
    33   For i:=1 to n do
    34     Begin
    35       Read(h[i],t[i]);
    36       if T[i]>m Then m:=T[i];
    37     End;
    38   qSort(1,n);
    39   xx:=1;
    40   For i:=1 to m do
    41     Begin
    42       f[i]:=f[i-1];
    43       If xx<=m Then
    44         While t[xx]=i do
    45           Begin
    46             Tt:=f[h[xx]-1]+(t[xx]-h[xx]+1);
    47             if Tt>f[i] Then f[i]:=Tt;
    48             Inc(xx);
    49           End;
    50       if f[i]>Iris Then Iris:=f[i];
    51     End;
    52   Writeln(Iris);
    53 End.
  • 相关阅读:
    初学mongodb笔记
    git学习【转载】
    json序列化与反序列化
    ES6函数比对ES5函数
    前端js脚本与防止js脚本
    js函数整合队列顺序执行插件
    padding-使用必记
    css小技巧
    三分钟教会你开密码箱
    百度地图Marker优化方案
  • 原文地址:https://www.cnblogs.com/Catch-22/p/3364241.html
Copyright © 2011-2022 走看看