CS大战

【题目描述】
暑假开始了,信息学小组的同学都很兴奋,不仅因为暑假可以有整段的时间用来学习信息学,还因为信息学小组会在暑假举办一场真人CS大赛。
我们的游戏当然比较具有挑战力,为了能够让孩子们能够放松一下,兼代小小的抒发一下对辅导老师的热爱之情。所以在CS大战之前,老师总会和学生们做一个小小的“较量”,作为学生们开始比赛的开场。在这个环节中只有老师是“警察”,而所有的信息学队员都是“匪”。当然,老师自然为了能够准备好比赛,已经把自己练成了神射手,而且每射击一枪,总会花费1秒钟,而且百发百中,“枪枪爆头”。
当然,一个老师面对这么多的同学们,自然有些困难。所以,在这个环节中,我们都对老师有一定照顾,就是:只有老师有枪,而学生们没有,而且学生必须从老师面前的唯一一条通道逃跑(好惨啊)。当然,如果学生们一个一个跳出来都会被老师挨个干掉(因为老师是神枪手嘛)。所以,孩子们为了能够还有幸存者能够“生还”。准备同时出现在老师面前。以求能够有些侥幸逃跑出来的……
而每个学生通过通道的时间不同(跑的不一样快嘛)。而且,老师给每一个学生都赋予了一个期望值(期望干掉他的值,当然肯定是根据平时每个人的表现决定的)。老师通过平时对学生的了解,事先计算出了,每个学生在通道里待的时间(以秒为单位)和每个学生的期望值。但是,老师还是给了你一个可以不参加这个游戏的机会,就是,你需要根据老师提供给你的这些数据,计算出老师能够射得的最大期望值。好了,开始了,如果不想被“爆头”,就开始行动吧。
【输入格式】
输入数据第一行是一个整数n(n <= 1000),代表有n个学生要参加游戏。第二行是n个正整数,代表每个学生在通道里待的时间(两个数间用1个空格隔开);第三行,也有n个整数,代表对应第二行每个学生老师给他们赋予的期望值x( x < 1000)。
【输出格式】
输出中只包含一个数据,即老师可以射得的最大期望值。
【样例输入】
5
1 2 5 3 3
2 3 2 4 3
【样例输出】
12
【分析】
贪心,依次枚举希望值大的学生,能打就打。

var
  t,f:array[0..1001]of longint;
    i,j,n,fi,h,p,s:longint;
begin
  readln(n);
    for i:=1 to n do read(t[i]);
    for i:=1 to n do read(f[i]);
    h:=-1;
    for i:=1 to n do
      if h<t[i] then h:=t[i];
    s:=0;
    for j:=h downto 1 do    //如果写for j:=1 to h do会错呦
    begin
        fi:=-maxlongint;
        for i:=1 to n do
            if (f[i]>fi)and(t[i]>=j) then
            begin
                fi:=f[i];
                p:=i;
            end;
        s:=s+f[p];
        f[p]:=0;
    end;
    write(s);
end.

转载于:https://www.cnblogs.com/JRX2015U43/p/6533457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值