Educational Codeforces 71 C

图片说明
图片说明

  • 题意:
  • 给出你一个字符串,代表油管的形状,但是这个形状不是固定的,你可以改变高为1的管道,管道的价格是a,支柱的价格是b,问你建成这样的管道最少花费多少?
  • 题解:
  • 贪心策略,题目给出头尾都是高度为1的管柱,每次如果高度为2,要保证左面和右面的柱子一定要为2,如果高度为1,就要讨论是高度为1的花费少还是高度为2的花费少。
  • 代码:
    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    const ll inf = 1e17;
    char s[200010];
    ll ans[200010][2];
    int main()
    {
      int t;
      cin>>t;
      while(t--)
      {
          ll n,a,b;
          cin>>n>>a>>b;
          scanf("%s",s+1);
          ans[0][0] = b,ans[0][1] = inf;
          for(int i=1;i<=n;i++)
          {
              if(s[i] == '0'){
                  ans[i][0] = min(ans[i-1][0],ans[i-1][1]+a)+a+b;
                  ans[i][1] = min(ans[i-1][0]+a+b,ans[i-1][1])+a+2*b;
              }else{
                  ans[i][0] = inf;
                  ans[i][1] = min(ans[i-1][0]+a+b,ans[i-1][1])+a+2*b;
              }
          }
          cout<<ans[n][0]<<endl;
      }
      return 0;
    }
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务