怎么做??????????????

冬令营普及强化-枚举

类型:作业

进行中

已经过:01:12:58

EN

林linjinhong

基本信息

用户linjinhong(林锦鸿)
班级2025冬令营普及强化营2
进入时间2025-02-04 08:30:16UTC+8
赛制取最高分

题目列表

一、 1(400分)

2

3

4

题目描述

提交记录

1. 小信的弹球

题目ID:20608必做题100分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 2000ms

空间限制: 262144kB

题目描述

小信有一个他最喜欢的小弹球,可是他觉得就一个弹球丢来丢去没有意思,于是他设计了一个平台,并且放置了一些木桩在上面。

这个平台长度为nn,1∼n1∼n的每个位置上有可能是空的,也有可能有一个木桩,小信给了你一个数组a1,a2,…,ana1​,a2​,…,an​,若ai=0ai​=0表示该位置是空的,若ai=1ai​=1则表示该位置上有一个木桩。小信想让小球从pp位置开始弹起(如果该位置有木桩的话),每次小球都可以向右弹kk个位置,现在他想要让小球弹出平台,可是由于平台有些位置并没有木桩,这件事并不能称心如意。

但小信可以花费xx (1≤x,y≤104)(1≤x,y≤104)个金币在任意空位置上放一个木桩,还可以花费yy个金币将平台的第一个位置给删去,他想问你最少花费多少金币可以让小球从pp位置弹起后(若删去了平台的一些第一个位置,则按新平台的第一个位置开始算)直接弹出平台。

输入格式

第一行输入三个整数n,p,k(1≤p≤n≤105,1≤k≤n)n,p,k(1≤p≤n≤105,1≤k≤n),分别表示平台的长度,小球弹起的第一个位置和每次向右弹起的距离。

接下来一行输入nn个整数a1,a2,…,an(ai=0a1​,a2​,…,an​(ai​=0 or ai=1)ai​=1),表示平台的第ii个位置有没有木桩。

第三行输入两个整数xx和yy,分别表示在空位置上加一个木桩和删去平台第一个位置所需要的花费。

输出格式

输出一个整数,表示小信所需要的最小花费。

样例

Input 1

10 3 2 0101010101 2 2

Output 1

2

Input 2

11 2 3 10110011000 4 3

Output 2

10

样例解释

对于样例#1,我们可以将平台的第一个位置删去,得到101010101 ,小球从第三个位置起跳,可以跳出平台,最小花费为22。

对于样例#2,我们可以将小球的前两个位置删去,再将原木板的第十个位置放一个木桩,得到: 110011010,此时最小花费为:y∗2+x=10y∗2+x=10。

image.png

C++17

评测规则

加载最近代码

Selection deleted

1

自测样例

最新编译结果

提交代码

  • /4
1 个赞

我是用搜索写的,先看一下直接弹的费用,然后砍一刀,接着看

1 个赞

屏幕截图 2025-02-04 100359

给个模板

666

。。。

Wrong Answer
80 分:

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int a[MAXN];

int main() {
int n, p, k;
cin >> n >> p >> k;
for (int i = 0; i < n; ++i) {
char c;
cin >> c;
a[i] = c - ‘0’;
}
int x, y;
cin >> x >> y;
int ans = INT_MAX;
for (int i = 0; i < p; ++i) {
int aiaa = p - i;
int st = y*i;
int ur = aiaa - 1;
while (ur<n) {
if (a[ur] == 0) {
st += x;
}
ur += k;
}
ans=min(ans, st);
}
cout <<ans<<endl;
return 0;
}

有解决方案吗?给一个? :clown_face:

洛谷名叫啥?

Diamond_ZuanShi

给了

谢谢!(五体投地)