首页 > 其他分享 >2024.08.23快手

2024.08.23快手

时间:2024-09-08 17:36:51浏览次数:1  
标签:23 快手 graph 2024.08 cin int vector 宝藏 dp

1. 判断括号字符串有效

给定一个只包括 '(',')','{','}','[',']' 的字符串 s(1 <= s.length <= 1e4) ,
判断字符串是否有效。如果有效,输出有效括号的个数。如果无效,则输出False。

简单的栈
int main() {
    int t;
    cin>>t;
    char match[3][2] = {{'(',')'},{'[',']'},{'{','}'}};
    while(t--){
        string cur;
        cin>>cur;
        stack<int> st;
        bool flag = true;
        int res = 0;
        for(auto c:cur){
            bool corr = false;
            for(int i=0;i<3;i++){
                if(c==match[i][1]){//如果匹配的是后面的右括号
                    if(!st.empty()&&st.top()==match[i][0]){
                        st.pop();
                        corr = true;
                        res++;
                    }
                    else{
                        flag = false;
                        break;
                    }
                }
            }
            if(!corr) st.push(c);//没有抵消掉,入栈
        }
        if(st.empty()&&flag) cout<<res<<endl;
        else cout<<"False"<<endl;
    }
    return 0;
}

2. 滑雪

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。
Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。

记忆化搜索
int main() {
    int R,C;
    cin>>R>>C;
    vector<vector<int>> grid(R,vector<int>(C));
    for(int i=0;i<R;i++)
        for(int j=0;j<C;j++)
            cin>>grid[i][j];
    vector<vector<int>> dp(R,vector<int>(C));//dp[x][y]表示以x,y为起点的最长路径长度
    int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}};
    function<int(int,int)> f = [&](int x,int y)->int{
        if(dp[x][y]!=0) return dp[x][y];
        int res = 0;
        for(int i=0;i<4;i++){
            int nx = x + dir[i][0];
            int ny = y + dir[i][1];
            if(nx<0||ny<0||nx==R||ny==C) continue;
            if(grid[nx][ny]<=grid[x][y]) continue;
            res = max(res,f(nx,ny));
        }
        dp[x][y] = res + 1;
        return dp[x][y];
    };
    int res = 0;
    for(int i=0;i<R;i++){
        for(int j=0;j<C;j++){
            res = max(res,f(i,j));
        }
    }
    cout<<res;
    return 0;
}

3. 挖宝藏

一个人有n体力,m个金币,k个宝藏点,p条双向路径。每个宝藏点都需要一定的金币v才能挖掘获取价值w。
每次通过一条路径都需要花费t的体力,可以走重复路径,但是宝藏只能获取一次。你可以选择任意一个点作为起点,问最多能获得多少价值的宝藏。

题意不清楚,数据也有问题,乱写的代码

int main() {
    int n,m,k,p;//持有体力,持有金币,点数目,路径数目
    cin>>n>>m>>k>>p;
    vector<vector<int>> treasure(21,vector<int>(2));//价值和需要的金币
    vector<vector<int>> graph(21,vector<int>(21,INT_MAX/3));//花费体力的代价
    for(int i=0;i<k;i++)
        cin>>treasure[i][0]>>treasure[i][1];
    for(int i=0;i<p;i++){
        int from,to,fee;
        cout<<"开始读取行"<<endl;
        cin>>from>>to>>fee;
        graph[from][to] = min(graph[from][to],fee);
        graph[to][from] = min(graph[to][from],fee);
    }
    cout<<"读取完毕"<<endl;
    for(int kk=0;kk<k;kk++)//弗洛伊德遍历中转点
        for(int i=0;i<k;i++)
            for(int j=0;j<k;j++)
                graph[i][j] = min(graph[i][j],graph[i][kk]+graph[kk][j]);
    cout<<"弗洛伊德计算完毕"<<endl;       
    //dp[i][j][k][state]表示以i为起点,剩余体力为j,剩余金币为k,已经挖取点状态为state的最大宝藏价值获取量
    vector<vector<int>> dp(k+1,vector<int>(1<<(k+1),-1));

    function<int(int,int,int,int)> f = [&](int x,int state,int sum1,int sum2)->int{
        cout<<"遍历"<<x<<"点"<<endl;  
        if(dp[x][state]!=-1) return dp[x][state];
        int res = 0;
        for(int i=0;i<k;i++){//遍历所有点
            if(!(state&(1<<i))){//第i个点没有挖掘
                if((sum1+graph[x][i]<=n)&&(sum2+treasure[i][1]<=m)){//体力和金币都满足要求
                    res = max(res,f(i,state|(1<<i),sum1+graph[x][i],sum2+treasure[i][1])+treasure[i][0]);
                }
            }
        }
        dp[x][state] = res;
        return res;
    };
    cout<<f(0,0,0,0)<<endl;
    return 0;
}

标签:23,快手,graph,2024.08,cin,int,vector,宝藏,dp
From: https://www.cnblogs.com/929code/p/18403164

相关文章

  • HNU-2023电路与电子学-实验3
    写在前面:本次实验是完成cpu设计的剩余部分,整体难度比上一次要小,细心完成就能顺利通过全部测评一、实验目的1.了解简易模型机的内部结构和工作原理。2.分析模型机的功能,设计8重3-1多路复用器。3.分析模型机的功能,设计8重2-1多路复用器。4.分析模型机的工作原理......
  • Desthiobiotin-PEG3-Amine|cas:2237234-71-6|脱硫生物素-三聚乙二醇-胺
    基本信息中文名称:脱硫生物素-三聚乙二醇-胺英文名称:Desthiobiotin-PEG3-Amine结构式:CAS号:2237234-71-6分子式(Molecularformula):C18H36N4O5分子量(Molecularweigh):388.5存储时间:一年描述脱硫生物素-三聚乙二醇-胺(Desthiobiotin-PEG3-Amine)是一种化学合成的生物素衍生物......
  • YOLOv8改进实战 | 注意力篇 | 引入ICCV2023顶会LSKNet:大选择性卷积注意力模块LSKA,助力
    YOLOv8专栏导航:点击此处跳转前言YOLOv8是由YOLOv5的发布者Ultralytics发布的最新版本的YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括CPU和GPU在内的各种硬件上执行。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在以前......
  • 华东理工大学《2023年816自动控制原理真题及答案 》(完整版)
    本文内容,全部选自自动化考研联盟的:《25届华东理工816自控考研资料》的真题篇+答案篇(2000-2024年)。后续会持续更新更多年份的真题+答案,记得关注哦~目录Part1:2023年真题题目Part2:2023年真题答案Part1:2023年真题题目Part2:2023年真题答案......
  • 【愚公系列】2023年10月 GDI+绘图专题 DrawString
    ......
  • 云原生学习笔记-第23天
    云原生学习笔记-第23天可以涵盖多个方面的内容,但由于具体的学习内容和进度因人而异,以下是一个基于云原生技术常见知识点和实践的概括性笔记,旨在提供一个全面的学习框架和参考。一、云原生概念与优势云原生定义:云原生是一种利用云计算和现代技术构建可靠、可扩展应用的方法。它涉及......
  • OpenStack学习笔记 - 第23天
    一、OpenStack架构深入理解OpenStack作为一个开源的云计算管理平台,其架构由多个核心组件组成,这些组件通过RESTfulAPI相互通信,共同提供计算、存储、网络等基础设施即服务(IaaS)的能力。以下是OpenStack架构的深入理解:1.控制器节点(ControllerNode)功能:负责管理整个OpenStack集群,处理......
  • 使用libmpg123加alsa实现MP3的播放/暂停,切换,模式选择,C语言3
    note:使用多线程的方式MP3实现播放器,其中用到libmpg123,以及asound库,解码用到libmpg123,播放用到alsa,以下为c语言例程源码#include<alsa/asoundlib.h>#include<mpg123.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include&l......
  • 【花雕学编程】Arduino动手做(230)---使用ESP32摄像头模块捕获图像并将其保存到SD卡上
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 2024.08.17京东
    1.桩子与雪村子里有一些桩子,从左到右高度依次为1,1+2,1+2+3…,每两颗桩子之间的间隔为1.现在下了一场大雪,但是不知道雪下了多厚,现在给你两个数字,这是雪后某相邻两个桩子在雪面的高度,请你通过这两个数字计算雪的厚度。简单计算intmain(intargc,char*argv[]){inta,b......