当前位置: 首页 > 面试题库 >

从给定的广告牌上删除广告牌

夏侯航
2023-03-14
问题内容

我碰到了这个问题

ADZEN是您所在城市非常受欢迎的广告公司。在每条路上,您都可以看到他们的广告广告牌。最近,他们面临着严峻的挑战,MG
Road是您所在城市中最常用和最美丽的道路,几乎被广告牌填满,这对
自然的看法。在人们的需求下,ADZEN决定拆除某些广告牌,以使道路的任何部分最多只能放置K个广告牌。您可以将MG
Road假定为具有N个广告牌的直线。最初,两个相邻的广告牌之间没有空隙。ADZEN的主要收入来自这些广告牌,因此,广告牌移除过程必须以这样的方式进行:剩余的广告牌应在所有可能的最终配置中提供最大可能的利润。配置的总利润是的总利润。该配置中存在的所有广告牌。给定N,K和N个广告牌中每个广告牌的利润值,

输入说明

第一行包含两个以空格分隔的整数N和K。然后在N行中描述每个广告牌的利润值,即,第一行包含第i个广告牌的利润值。

    Sample Input
    6 2
    1
    2
    3
    1
    6
    10

    Sample Output
    21

说明

在给定的输入中,有6个广告牌,并且在该过程之后,最多不能有2个在一起。因此,删除第一个广告牌和第​​四个广告牌,获得配置_ 2 3 _ 6
10的利润为21。没有其他配置的利润大于21。因此答案为21。

    Constraints
    1 <= N <= 1,00,000(10^5)
    1 <= K <= N
    0 <= profit value of any billboard <= 2,000,000,000(2*10^9)

我认为我们必须在前k +
1个板中选择最低成本的板,然后重复相同的操作直到最后,但这并不能为所有情况提供正确的答案。我尽我所能,但找不到解决方案。如果有任何想法,请分享您的想法。


问题答案:

这是一个典型的DP问题。假设P(n,k)是让k个广告牌到达道路上第n个位置的最大收益。然后,您有以下公式:

 P(n,k) = max(P(n-1,k), P(n-1,k-1) + C(n))
 P(i,0) = 0 for i = 0..n

其中c(n)是将第n个广告牌投放道路的收益。使用该公式自底向上计算P(n,k),您将获得O(nk)时间的解。

我让您找出该公式为何成立。

编辑

党,我看错了这个问题。

仍然是DP问题,只是公式不同。假设P(v,i)表示最后一个广告牌簇的大小为i的点v处的最大利润。然后可以使用以下公式描述P(v,i):

P(v,i) = P(v-1,i-1) + C(v) if i > 0 
P(v,0) = max(P(v-1,i) for i = 0..min(k, v)) 
P(0,0) = 0

您需要查找max(P(n,i) for i = 0..k))



 类似资料:
  • 获取所有广告位 获取一个广告位的广告列表 批量获取广告列表 查询所有广告位 GET /advertisingspace 响应 Status: 200 OK [ { "id": 1, "channel": "boot", // 广告位所属模块 "space": "boot", // 广告位标识 "alias": "启动图广告", // 广告位别名 "a

  • 一、简介 增加网站的推广与合作。 二、功能演示 1.添加版位 版位类型:矩形横幅,固定位置,漂浮移动,对联广告,图片轮换广告,图片列表广告,文字广告,代码广告。这里不做详细展示介绍。 2.版位管理 3.添加广告 操作步骤:模块——>模块管理——>广告———>广告列表——>添加广告 4.广告管理 5.重新生成JS(注:当你修改了广告配置时,请重新生成。) 6.配置 可对广告进行配置管理,如下图:

  • 1.激励视频广告 1.1 广告重点注意事项: 由开发者提供广告入口,含样式、时机、位置等(如下例子中“复活”按钮)。 在展示广告入口前,必需调用步骤1拉取广告并有广告返回,无广告则不展示广告入口。 每次调用只会拉取一个广告,多次调用仅展示最后一次调用的广告。用户退出游戏广告即销毁。 用户点击按钮后,开发加载在游戏中展示加载UI,直到步骤2监听事件中开始播放视频反馈。 视频开始播放后,取消2步骤的中

  • 一个轻量极的、灵活的组件,可视情况扩张到整个视口以显示你的网站的关键营销信息。 <div class="jumbotron"> <h1 class="display-3">Hello, world!</h1> <p class="lead">This is a simple hero unit, a simple jumbotron-style component for callin

  • 调用说明show只是会触发广告展示,但是不一定会展示(受限于广告系统的策略等) 支持版本: viewId 1001(静态广告)、1002(动态) 手机qq 7.6.5 支持原生游戏(cocos/laya/ergret),不支持H5游戏(使用DOM的游戏) viewId 1003(原生和H5游戏均支持) 仅在手机qq 7.8.5支持。 支持原生游戏(cocos/laya/ergret),支持H5游戏

  • 我想得到的活动和广告表现的报告。到目前为止,我已经得到了竞选业绩报告,但我无法得到广告业绩报告。 我在客户端库中看到了谷歌广告api和它们的例子。但我无法理解如何获得广告报道。 我正在制作一个函数,通过谷歌广告api为我获取报告。 谷歌广告Api:https://developers.google.com/google-ads/api/docs/fields/ad_group_ad#ad_grou

  • 问题内容: 如您所知,它已落入Webkit(demo)中。到目前为止,我只能看到它仅在父元素内有效。但是我想知道是否可以在带有表的滚动div中使用它。 因此,它需要在的滚动事件“听” ,不是。 我知道我可以使用javascript和绝对定位来做到这一点,但我想知道是否会支持这一点。 问题答案: 在2018 年的 工作日上保持 粘性! 在样式表中,只需添加以下一行: 您的表将需要包含 thead 和

  • 1. 简介 指定广告跟踪将提供您各种其它媒介推广为您网站带来的流量情况。通过对各种媒介推广给您网站带来的流量对比,您可以了解哪种媒介推广能够给您网站带来较多的流量,哪种媒介推广给您网站带来的流量质量较高。基于各种媒介推广带来的不同流量及流量质量,您可以进一步比较分析在各种媒介上的关键词和创意,了解哪些关键词和创意更能够吸引访客,哪些关键词和创意还需要进一步优化以及如何优化等等。通过不断地比较分析各