首页 > 其他分享 >暑假补题记3

暑假补题记3

时间:2023-07-24 15:55:32浏览次数:35  
标签:柱子 int cin vis 暑假 题记 include inf

Problem - C - Codeforces

思路:一道dp,首先明确vis含义,vis[i-1][0]代表的是上一步是一个1的柱子地最优解,vis[i-1][1]代表的是上一个是一个2的柱子的最优解,然后就初始状态第一个题目是一定是0开始所以vis[0][1]="非常大的数" vis[0][0]=a+b,就是一个1的柱子加一个1的管道,然后开始遍历每一个节点,当他是一个路口的时候,就必须是要来到1所以   方程是vis[i][0]=inf,vis[i][1]=min(vis[i-1][0]+a*2+b*2,vis[i-1][1]+a+b*2);

前面那个就是不能在向0走,后面那个就是向1走,前一步在1柱子的时候向2走和前一个在2柱子的时候在向2走,然后求最小,

再下来就是不是路口的时候,可以向2也可以向1走求最小就可以。

然后结果就是因为最后一个一定是0所以是vis[n-1][0]+b;最后一根柱子n-1就是在最后一个到0的最优解

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#define int long long
#define inf 884888488848997
using namespace std;
const int N=2e5+8;

vector< pair<int,int> > q;

int vis[N][2];
int32_t main() {
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while (t--) {
        int n, a, b;
        cin >> n >> a >> b;
        string s;
        cin >> s;
        ::memset(vis,0,sizeof (vis));
        vis[0][1] = inf, vis[0][0] = a + b;
        for(int i=1;i<s.size();i++)
        {
            int k=s[i]-'0';
            if(k)
            {
                vis[i][0]=inf;
                vis[i][1]=min(vis[i-1][0]+2*a+2*b,vis[i-1][1]+a+2*b);
            }
            else
            {
                vis[i][0]=min(vis[i-1][0]+a+b,vis[i-1][1]+2*a+b*2);
                vis[i][1]=min(vis[i-1][0]+2*a+b,vis[i-1][1]+a+2*b);
            }
        }
        cout<<vis[n-1][0]+b<<endl;
    }
    return 0;
}

 

标签:柱子,int,cin,vis,暑假,题记,include,inf
From: https://www.cnblogs.com/whatdo/p/17577445.html

相关文章

  • 7.23 做题记录
    P3897[湖南集训]CrazyRabbit考虑一个点到圆的两个切点构成的圆弧,如果两个点连线与圆不交,那么两端圆弧是相交但不包含的,且把一段圆弧取反不影响答案。断环成链,原问题等价于选最多的区间\((l,r)\)满足对于所有\(i<j\),\(l_j<r_i\)枚举起始区间做LCS即可,时间复杂度\(O(......
  • 暑假排位赛1
    和麻衣学姐一起工作有\(n\)个人,每个人有一个能力值\(v_i\),他只愿意和能力值不低于\(l_i\)且不高于\(r_i\)的人一起合作帮助麻衣学姐。麻衣学姐想知道最多可以选出多少人一起帮她。\(n\)(\(1\len\le10^5\))\(l_i\),\(v_i\),\(r_i\)(\(1\lel_i\lev_i\ler_i......
  • 7.23做题记录
    线段树没学会 ......
  • 暑假生活2
    学习内容比我想象中得繁重,js的东西接触了一些,顺便给小学期第二阶段的代码进行了一些优化(界面方面)大数据方面的学习几乎没有涉及到,python和Java以及C/C++的区别感觉还有蛮大的,学到现在有点迷糊或许需要重新找资源进行视频学习关于上周的学习计划还需要调整,初步计划是把大数据方面......
  • 我的2023暑假青岛3天2晚旅游计划
    我的原暑假出游计划:https://ntopic.cn/p/2023072301/看海玩水优选青岛小朋友们最开心的暑假来了,今年我的2位小朋友最希望去玩的是看海和玩水。这样今年暑假我的出游目标就比较明确了,该计划实施路径了。出游目的地的比较和选择(维度:温度适宜、有海有沙滩):上海本地游:有海有沙滩的......
  • 暑假OI做题笔记
    P1525关押罪犯题意翻译:给定一张图,将图中结点分为两个互补的集合,求集合间边权最小值知识点:并查集做法:对权值排序,尽量分成两个不同的集合(如果一方无敌人,则另一方成为其敌人;否则将另一方丢到另一监狱里面),出现矛盾时的权值即为答案P2024食物链知识点:并查集做法:把每个动物分成......
  • 7.22 做题记录
    小摆......
  • 暑假第三周总结
    交代一下最近的动态,今天是回家的第二周了,我找到了一份暑假工,开始一边打工赚钱,一边减肥的生活。在回家的这段时间里面,我重新学习了一下尚硅谷的javaweb教程,在视频讲解中,我学习到了很多之前不会的内容,也开始逐渐减少对jsp文件的依赖,开始学习servlt的相关内容(之前对于这方面的认知仅......
  • 2023-07-16~07-22第二周暑假生活
    本周平均学习时间为3小时每天,大部分时间在学习CSScss通过伪类伪元素动画效果可以实现许多有趣的动画;动画元素为animotion;在css中一般这样定义:animation:nameattribute1attribute2...;/*attribute可以省略*/@keyframesname{/*具体实现*/0%{/*动画时间进行到0%的效果*/}10......
  • P3750 [六省联考 2017] 分手是祝愿 做题记录
    P3750[六省联考2017]分手是祝愿做题记录题目传送门题目描述ZeitundRaumtrennendichundmich.时空将你我分开。B君在玩一个游戏,这个游戏由\(n\)个灯和\(n\)个开关组成,给定这\(n\)个灯的初始状态,下标为从\(1\)到\(n\)的正整数。每个灯有两个状态亮和灭,......