• 变音量


    [问题描述]
    你将要在元旦演奏一场吉他专场。但你不希望声音平淡,所以你希望每个曲之间都有变化。现在你已经确定了每个曲可以与上一个曲之间的音量的变化量,即每首曲开始,你可以对音量选择增加或减少一个指定的变化值。当然音量不可能为负数,也不能太高,因此必需保证每首曲音量在0和maxLevel之间(包含)。
    你的任务是,根据已有的开始音量beginLevel 和每首曲之间的变化量,求出最后一首曲的最大可能音量。如果没有方案,输出 -1。
    [输入文件:song.in]
    文件第一行有三个整数,n, beginLevel, maxLevel,分别表示曲目数,开始量,最大限制音量。
    下面有n-1行整数,第i行整数表示第i首曲与第i+1首曲之间的变化量。
    [输入文件:song.in]
    文件只一行一个数,答案。

    [题解]

    判定性DP.

    [代码]

    var
      f:array[0..100,-2000..2000] of boolean;
      n,start,max,i,j,jj:longint;
      a:array[0..100] of longint;
    begin
      assign(input,'song.in');
      assign(output,'song.out');
      reset(input);
      rewrite(output);
      readln(n,start,max);
      for i:=1 to n-1 do
        readln(a[i+1]);
      fillchar(f,sizeof(f),false);
      f[1,start]:=true;
      for i:=2 to n do
        for j:=0 to max do
          begin
            if j-a[i]>=0 then
              f[i,j]:=f[i-1,j-a[i]];
           if j+a[i]<=max then
             f[i,j]:=f[i,j] or f[i-1,j+a[i]];
         end;
      jj:=-1;
      for j:=max downto 0 do
        if f[n,j] then
          begin
            jj:=j;
            break;
          end;
      writeln(jj);
      close(input);
      close(output);
    end.
    
  • 相关阅读:
    Oracle DataGuard搭建(二)
    Oracle DataGuard搭建(一)
    Linux 安装oracle10g 配置dataguard 介绍和步骤
    Oracle DataGuard数据备份方案详解
    汽车行业的DMS系统 IT不变应万变
    汽车行业DMS系统介绍
    详解UML中的聚合,关联,泛化等关系
    ASP.NET将Session保存到数据库中
    C#快捷键
    Asp.net中使用资源文件实现网站多语言
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319549.html
Copyright © 2020-2023  润新知