C. Gas Pipeline

题意:略

题解:艹,表示到第根柱子,且柱子高度为的最小花费,为0代表柱子高度为1,为1表示柱子高度为2,字符串的长度为n,一共有n+1根柱子,柱子编号为1到n,则有初始条件,其余初始化为,

考虑 是否为‘0’,是的话两种高度的柱子都可建造,否则只可建造高度为2的柱子,答案为

时间复杂度为

代码:

# define _CRT_SECURE_NO_WARNINGS
#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>
#include <vector>
#include <queue>
#define Pair pair<int,int>
//#define int long long
#define fir first
#define sec second
using namespace std;
/*---------------------------------------------------------------------------------------------------------------------------*/
const int N = 2e5 + 5;
const double pi = acos(-1.0);
typedef long long ll;
//const int mod = 998244353;
const int mod = 1e9 + 7;
#define inf 0x3f3f3f3fstruct something {int num, period, time;bool operator < (const something& y)const {return y.time < time || (y.time == time && y.num < num);}something() {}something(int num, int period, int time) :num(num), period(period), time(time) {}
};int dx[8] = { 0, 0, 1,-1, 1, 1,-1,-1 };
int dy[8] = { 1,-1, 0, 0, 1,-1, 1,-1 };
char str[N];
ll f[N][2];
signed main() {int t;scanf("%d", &t);while (t--) {memset(f, 0x3f, sizeof f);int n, a, b;scanf("%d%d%d", &n, &a, &b);getchar();scanf("%s", str + 1);//str[n + 1] = '0';//printf("%s\n", str + 1);f[1][0] = b;for (int i = 2; i <= n + 1; i++) {if (str[i - 1] == '0') {f[i][0] = min(f[i - 1][0] + a + b, f[i - 1][1] + 2 * a + b);f[i][1] = min(f[i - 1][0] + 2 * b + 2 * a, f[i - 1][1] + 2 * b + a);}else f[i][1] = f[i - 1][1] + 2 * b + a;}printf("%lld\n", f[n + 1][0]);}return 0;
}

Codeforces 1207 C. Gas Pipelin(线性DP)相关推荐

  1. 【CodeForces - 474D】Flowers (线性dp)

    题干: We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we al ...

  2. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  3. CodeForces - 456C Boredom(线性dp)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...

  4. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  5. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  6. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  7. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  8. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

  9. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

最新文章

  1. 解决远程登录MYSQL数据库
  2. [导入]创建笔 (Visual C#)
  3. java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
  4. java类验证和装载顺序_java类加载机制,你会了吗?
  5. 2021-11-14Collection
  6. 初学Java你有这些疑惑吗?本文给你几个建议
  7. VT技术开创普遍虚拟化计算时代
  8. java反射性能问题_Java反射应用实例java反射的性能问题 | 学步园
  9. VS 2010 SP1 and SQL CE :ScottGu's Blog
  10. 20190905:(leetcode习题)爬楼梯
  11. session简单学习2
  12. 视频倍速插件(火狐,谷歌)
  13. 今日头条笔试之手串问题
  14. YOLO版本不兼容,报错AttributeError: Can’t get attribute ‘SPPF’ on <module ‘models.common’
  15. 微PEU盘如何还原成普通U盘
  16. hp t410微型计算机使用,HP 发表新款 t410 AIO Smart Zero 精简型电脑,仅需网络线即可作为电源驱动使用(影片)...
  17. CentOS 7解决“ping: www.baidu.com: 未知的名称或服务“这个问题
  18. 洛谷 P1255 数楼梯(dp + 高精度)
  19. Cadence设计原理图常用导出方案
  20. 三、伊森商城 快速开发 人人开源后台管理 p10

热门文章

  1. SpringBoot实现发送QQ邮箱功能
  2. Hibernate入门4.核心技能
  3. python上的免费免登录微信智能聊天机器人
  4. 腾讯阿里打通生态,针锋相对的时代或将结束?
  5. 一文看懂EtherCAT总线控制
  6. Cravatar修改头像方法
  7. unity 地图画格_Unity2D 四边形与六边形网格地图寻路 [新手]
  8. 电脑上的文件删除不掉,需要管理员权限怎么办?
  9. 融资、量产和一栈式布局,这家Tier 1如此备战高阶智驾决赛圈
  10. Visual Studio.NET 术语表