你最愿意做的哪件事,才是你的天赋所在

0%

Educational Codeforces Round 71 (Rated for Div. 2)

这场确实被教育了,自己的缺点暴露无遗,菜也暴露无遗,给我敲响了一个警钟。

题目链接

Educational Codeforces Round 71 (Rated for Div. 2)

C

思路

DP,dp[0][i]表示第i个位置高度为1的最低花费,dp[1][i]表示第i个位置高度为2的最低花费

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 2e5+10;
ll dp[maxn][2];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,a,b;
scanf("%d %d %d",&n,&a,&b);
string s;
cin>>s;
for(int i=0;i<=n;i++)
for(int j=0;j<2;j++)
dp[i][j]=1e18;
dp[0][0]=b;
dp[0][1]=1e18;
for(int i=1;i<=n;i++)
{
if(s[i-1]=='1')
{
dp[i][1]=b+b+dp[i-1][1]+a;
}
else
{
dp[i][1]=min(dp[i-1][1]+b+b+a,dp[i-1][0]+a+a+b+b);
dp[i][0]=min(dp[i-1][1]+a+b+a,dp[i-1][0]+a+b);
}
}
cout<<dp[n][0]<<endl;
}
}
-------------你最愿意做的哪件事才是你的天赋所在-------------