CF1415-C. Bouncing Ball

题意:

在\(x\)轴上有\(n\)个点(从\(1\)到\(n\)),每个点都有一个值\(0\)或\(1\),\(0\)代表这个点不能走,\(1\)代表这个点可以走。你可以对这\(n\)个点执行一下两个操作:

1. 花费\(x\)让一个值为\(0\)的点变为\(1\)。

2. 花费\(y\)删除第一个点,其余的点的\(x\)轴坐标整体减一。

完成上面操作之后,你从点\(p\)出发,每次向前跳\(k\)个单位,即你能跳的位置有\(\{p,p+k,p+2k,...\}\) 直到跳出这\(n\)个点。若在跳出这\(n\)个点之前落在了一个值为\(0\)的点上,那么就失败了。

那么为了能成功的跳出这\(n\)个点,最小的花费是多少?


思路:

一般的思路,枚举前面一共移除多少块,然后从\(p\)点开始,每次往前跳\(k\)个单位,遇到\(0\)就在总花费中加上\(x\),最终取花费最小的作为答案,但是复杂度高达\(O(n^2/k)\)这是不能接受的。

我们可以先对这些数据进行预处理,利用DP从后往前算出花费,\(dp[i]\)表示的状态是:当\(i\)点作为\(p\)点,要跳出\(n\)个点的花费(这里不包括移除前面的点的花费),转移方程为\(f(x)=\left\{\begin{aligned}&dp[i]=a[i]==1?0:x,&i+k>n\\&dp[i]=dp[i+k]+a[i]==1?0:x,&i+k<=n\end{aligned}\right.\)

处理完这些数据就可以从\(p\)点开始枚举每一个点,那么从这点出发的总花费就是\((i-p)*y+dp[i]\),全部枚举完取最小的一个就是答案。


AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream> typedef long long ll; const int Maxn = 100005;
const int INF = 0x3f3f3f3f; int dp[Maxn], a[Maxn]; void solve() {
int n, p, k;
scanf("%d %d %d", &n, &p, &k);
for (int i = 1; i <= n; i++) {
scanf("%1d", a + i);
}
int x, y;
scanf("%d %d", &x, &y);
for (int i = n; i >= p; i--) {
if (i + k > n) {
dp[i] = a[i] == 1 ? 0 : x;
} else {
dp[i] = dp[i + k] + (a[i] == 1 ? 0 : x);
}
}
int ans = INF;
for (int i = p; i <= n; i++) {
ans = std::min(ans, (i - p) * y + dp[i]);
}
printf("%d\n", ans);
} int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
} return 0;
}

CF1415-C. Bouncing Ball的更多相关文章

  1. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) C. Bouncing Ball (后缀和,枚举)

    题意:有一长度为\(n\)的平台,平台有的位置有木桩,可以使小球弹起来,小球必须从第\(p\)个位置开始,而且每次都会向右弹\(k\)个单位,然后有的位置是没有木桩的,你可以在这些的空的位置放一个木桩 ...

  2. 推荐25个帮助你提高技能的 CSS3 实战教程

    使用 CSS,你能够以极高的效率和易用性创造出美丽的设计.而目前流行的 CSS3 技术更加强大,能够创造更多丰富的效果和功能,而不需要任何外部插件.今天,我为大家收集了25个很有用的 CSS 教程,技 ...

  3. 第14章 位图和位块传输_14.4 GDI位图对象(3)

    14.4.10 非矩形的位图图像 (1)“掩码”位图——单色位图,要显示的像素对应的掩码置1,不显示置0(2)光栅操作(点这里,见此文分析) (3)MaskBlt函数 ①MaskBlt(hdcDest ...

  4. (转) Deep Reinforcement Learning: Pong from Pixels

    Andrej Karpathy blog About Hacker's guide to Neural Networks Deep Reinforcement Learning: Pong from ...

  5. 自定义View(7)官方教程:自定义View(含onMeasure),自定义一个Layout(混合组件),重写一个现有组件

    Custom Components In this document The Basic Approach Fully Customized Components Compound Controls ...

  6. [转]"Windows Phone 7程序设计”完全版电子书可以免费下载了

    本文转自:http://www.cnblogs.com/salam/archive/2010/10/29/1864246.html 现在学习Windows Phone 7开发资料十分有限,除了MSDN ...

  7. canvas 乒乓球

    <!DOCTYPE html> <html> <head> <title>Bouncing Ball With inputs</title> ...

  8. pygame写的弹力球

    这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ...

  9. Samples for Parallel Programming with the .NET Framework

    The .NET Framework 4 includes significant advancements for developers writing parallel and concurren ...

随机推荐

  1. 【Oracle】11G 11.2.0.4 RAC环境打补丁

    一.准备工作 1,数据库环境 操作系统版本  : RedHat 7.2 x64   数据库版本    : Oracle 11.2.0.4 x64 RAC    Grid          : 11.2 ...

  2. Cloudera Manager添加主机节点

    为了监控方便,想把研发环境中的主机节点都纳入Cloudera Manager的管理中,这样在遇到问题时可方便的查看主机的硬件资源情况. 添加主机节点有多种方式,由于我是离线工作,所以选择rpm包的方式 ...

  3. 未使用绑定变量对share_pool的影响

    oracle SGA中包含数据高速缓冲,重做日志缓冲,以及共享池(share_pool).共享池中包含库高速缓冲(所有的SQL,执行计划等)和数据字典缓冲(对象的定义,权限等). 所以,如果SQL中没 ...

  4. scp等不需要存入know_host

    1.修改sshd的配置文件 vi /etc/ssh/ssh_config 修改为如下 StrictHostKeyChecking no UserKnownHostsFile /dev/null 重启s ...

  5. missing tables and indexes的处理办法

    最近做了SAP系统的异构迁移,顺便把oracle DB也升级了,从10g升级到11g,但是升级后,在DB02或者是ora_space中的diagnostics->Missing Tables a ...

  6. three.js cannon.js物理引擎地形生成器和使用指针锁定控件

    今天郭先生说一说使用cannon.js物理引擎绘制地形和使用指针锁定控件.效果如下图.线案例请点击博客原文. 这里面的生成地形的插件和指针锁定控件也是cannon.js的作者schteppe封装的,当 ...

  7. windows中使用django时报错:A server error occurred. Please contact the administrator.

    这是因为在视图函数中使用了get函数,获取了不存在的数据例如:数据库中不存在一条name为hello1的数据,使用如下语句访问message = Message.objects.get(name='h ...

  8. 通过电脑浏览器调试真机h5兼容问题

    前言 在h5开发过程中,起初我们使用PC浏览器的手机模式打开开发中的页面,并使用控制台进行调试,但实际真机兼容性问题无法调试到:在这种情况下,我们通常使用vConsole(即移动端的控制台)来调试,但 ...

  9. widnows2008双网卡双ip不同Ip段

    机房内有不同段ip,因为线路不一样,比如普通带宽和cn2带宽,现有需求配置双网卡双ip ip1: 121.7*.*.*  255.255.255.192 121.7*.*129 ip2: 103.11 ...

  10. LR_添加系统资源监控失败

    1.服务开启情况:RPC.Rmote Resgistry.Network DDE.Server.Workstation.Network connection以上服务是否已开启 2.是否开了防火墙,如有 ...