牛客周赛 Round 37VP(DEF)

news2025/1/18 10:26:01

D.思维题:

若按照顺序发现很难入手,于是我们不妨先小紫,再让小红反悔即可

假设为cabababbabazbc,如果直接小紫,那么它一定以a开头,于是小红可以先把首尾的a去掉,即czbc,此时可以得到bc,于是小红把b也删了,这样小紫只可以取c了。

最小值在两边呢?

对于aba,小红无论怎么删,小紫都可以得到a,因此,我们可以得到一个结论:

若两边的字母一样,答案就是那个字母。

那么若不一样呢?

我们看看abc,对于小紫,可以变成a,于是小红一定要删了 a,同理也会把b删了,答案就是C.

假如两边没有min,dbhfncac,那么小红一定删bhfnca,此时d>c,所以答案是d.

假如两边有一个是abcddsagbw,于是小红让其变成gbw,此时小紫可以bw,于是把gb也删了,得到w.

因此,我们可以得出一个结论:答案就是较大的那一个。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int main(){
    cin>>n>>s;
    if(n==1) cout<<s;
    else{
        if(s[0]>=s[n-1]) cout<<s[0];
        else cout<<s[n-1];
    }
}

E.分层BFS

我们可以分成4个图,dis[1010][1010][4],在每一个图中只能走一个方向。当他遇到*可以走到其他图

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,m,dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}},tx,ty;
string s[1010];
int dis[1002][1010][4];
struct node{
    int x,y,k;
};
queue<node> q;
int main(){
    cin>>t;
    while(t--){
        cin>>n>>m;
        for(int i=0;i<n;i++) cin>>s[i];
       /* for(int i=0;i<n;i++) cout<<s[i]<<endl;*/
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                for(int k=0;k<4;k++) dis[i][j][k]=1e9;
            }
        }
        
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(s[i][j]=='S'){
                    for(int k=0;k<4;k++){
                        q.push({i,j,k});
                        dis[i][j][k]=0;
                    }
                }
                if(s[i][j]=='T'){
                    tx=i;
                    ty=j;
                }
            }
        }
        while(!q.empty()){
            node ck=q.front();
            q.pop();
            int x=ck.x,y=ck.y;
            if(s[x][y]=='.'||s[x][y]=='S'||s[x][y]=='T'){
                int xx=x+dir[ck.k][0],yy=y+dir[ck.k][1];
                if(xx<0||yy<0||xx>=n||yy>=m||s[xx][yy]=='#') continue;
                if(dis[xx][yy][ck.k]>dis[x][y][ck.k]+1){
                    dis[xx][yy][ck.k]=dis[x][y][ck.k]+1;
                    q.push({xx,yy,ck.k});
                }
            }
            else if(s[x][y]=='*'){
                for(int i=0;i<4;i++){
                    if((i^(ck.k))==1) continue;
                    int xx=x+dir[i][0],yy=y+dir[i][1];
                    if(xx<0||yy<0||xx>=n||yy>=m||s[xx][yy]=='#') continue;
                    if(dis[xx][yy][i]>dis[x][y][ck.k]+1){
                    dis[xx][yy][i]=dis[x][y][ck.k]+1;
                    q.push({xx,yy,i});
                }
                }
            }
        }
        int mi=1e9;
        for(int i=0;i<4;i++) mi=min(mi,dis[tx][ty][i]);
        if(mi>=1e9) cout<<-1<<endl;
        else cout<<mi<<endl;
    }
}

F。DP

本质上就是求一个最短的位与==0的子序列。

首先看到数据范围先去重,因为相同的&还是自己。

接下来我们令dp[i][0]表示原来的合成i的最小保留,1代表现在,不断滚动即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,dp[210][2],x;
bool tong[200];
int main(){
    cin>>t;
    while(t--){
        cin>>n;
        memset(tong,0,sizeof(tong));
        memset(dp,0x3f,sizeof(dp));
        for(int i=0;i<n;i++){
            scanf("%d",&x);
            tong[x]=1;
        }
        for(int i=0;i<=200;i++){
            if(tong[i]==0) continue;
            dp[i][1]=1;
            for(int j=0;j<=200;j++){
                dp[i&j][1]=min(dp[i&j][1],dp[j][0]+1);
            }
            for(int j=0;j<=200;j++) dp[j][0]=dp[j][1];
        }
        if(dp[0][0]>n) cout<<-1<<endl;
        else cout<<n-dp[0][0]<<endl;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1533744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

19---时钟电路设计

视频链接 时钟硬件电路设计01_哔哩哔哩_bilibili 时钟电路设计 晶振是数字电路的心脏&#xff0c;数字电路需要一个稳定的工作时钟信号&#xff0c;时钟电路至关重要&#xff01; 1、晶振概述 晶振一般指晶体振荡器。晶体振荡器是指从一块石英晶体上按一定方位角切下薄片&…

基于stable diffusion的IP海报生成

【AIGC】只要10秒&#xff0c;AI生成IP海报&#xff0c;解放双手&#xff01;&#xff01;&#xff01;在AIGC市场发展的趋势下&#xff0c;如何帮助设计工作者解放双手。本文将从图像生成方向切入&#xff0c;帮助大家体系化的学习Stable diffusion的使用&#xff0c;完成自有…

sonar接入maven项目

1、介绍 sonar是一款静态代码质量分析工具&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;而且能够集成在IDE、Jenkins、Git等服务中&#xff0c;方便随时查看代码质量分析报告。他有如下特性 (1) 检查代码是否遵循编程标准&#xff1a;如命…

【回归预测】基于DBO-BP(蜣螂优化算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#68】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. BP神经网络2. 蜣螂优化算法3. DBO-BP神经网络模型的构建4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 1. BP神…

[云] vmware: host: net: Net.CoaleseDefaultOn

https://communities.vmware.com/t5/Storage-Performance/Advanced-Networking-Performance-Options/ta-p/2792649 在vsphere client下的路径是&#xff1a; 选择使用的host -> 右键setting->configure-> system->advanced system setting->edit->Net.Coales…

第九节HarmonyOS 常用基础组件31-Toggle

1、描述 组件提供勾选框样式、状态栏样式以及开关样式。 2、子组件 仅当ToggleType为Button时可包含子组件。 3、接口 Toggle(options: { type: ToggleType , isOn?: boolean}) 4、参数 参数名 参数类型 必填 描述 type ToggleType 是 开关的样式。 isOn boole…

蓝桥杯 第3217题 简单的异或难题 C++ Java Python

题目 思路和解题方法 计算给定数组中子数组异或和的问题。它采用了前缀异或的方法来预处理数组&#xff0c;然后对于每个查询&#xff0c;通过异或操作计算子数组的异或和。 读取输入的数组&#xff0c;并计算每个位置的前缀异或和。对于每个查询&#xff0c;读取查询的左右边界…

一文读懂MES和ERP的区别

MES&#xff08;Manufacturing Execution System&#xff09;系统是制造执行系统&#xff0c;位于上层的计划管理系统与生产过程的直接工业控制系统之间&#xff0c;是面向车间层的管理信息系统&#xff0c;能够对整个车间制造过程进行优化&#xff0c;实时收集生产过程中的数据…

python 爬虫 地理空间DEM 制作中国地形

一.配置Python 爬虫 环境 from selenium import webdriver import time # from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys # from selenium.webdriver.comm…

Java毕业设计-基于springboot开发的乐校园二手书交易管理系统-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能模块3、卖家用户功能模块4、用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springbo…

docker 修改日志存储路径

docker 日志默认存放在 /var/lib/docker/ 下 docker info修改步骤&#xff1a; 1、停止docker服务 systemctl stop docker 2、新建配置文件 vi /etc/docker/daemon.json添加如下内容 {"data-root": "/data/docker" }3、然后把之前的数据全部复制到新目…

LabVIEW柴油机安保监控系统

LabVIEW柴油机安保监控系统 随着航运业的快速发展&#xff0c;确保船舶柴油机的安全稳定运行变得尤为重要。船舶柴油机故障不仅会导致重大的经济损失&#xff0c;还可能危及人员安全和环境。设计并开发了一套基于LabVIEW平台的柴油机安保监控系统&#xff0c;旨在通过实时监控…

C++ 子序列

目录 最长递增子序列 摆动序列 最长递增子序列的个数 最长数对链 最长定差子序列 最长的斐波那契子序列的长度 最长等差数列 等差数列划分 II - 子序列 最长递增子序列 300. 最长递增子序列 子数组是连续的&#xff0c;子序列可以不连续&#xff0c;那么就要去[0, i - 1]…

带你学会深度学习之卷积神经网络[CNN] - 4

前言 本文不讲述如泛化&#xff0c;前向后向传播&#xff0c;过拟合等基础概念。 本文图片来源于网络&#xff0c;图片所有者可以随时联系笔者删除。 本文提供代码不代表该神经网络的全部实现&#xff0c;只是为了方便展示此模型的关键结构。 CNN&#xff0c;常用于计算机视…

OSM欧诗漫加入美妆可持续联盟,共话绿色发展新路径

3月12日&#xff0c;中国化妆品行业首个可持续联盟——美妆可持续联盟&#xff08;BSC&#xff09;正式宣告成立。作为国内珍珠科技美肤领军品牌&#xff0c;OSM欧诗漫受邀成为可持续发展联盟的首批成员&#xff0c;并在第46个植树节之际&#xff0c;与80余家中外同行企业携手种…

rfc793-timewait状态

time wait状态 主动关闭连接的一方&#xff0c;在四次挥手最后一次发送 ACK 后&#xff0c;进入 TIME_WAIT 状态。在这个状态里&#xff0c;主动关闭连接一方等待 2MSL&#xff08;Maximum Segment Life&#xff0c;报文段最大生存时间&#xff0c;在RFC793 中定义为 2 min&…

表情识别数据集

表情视频数据集 在许多的研究中,研究者通常会把人脸表情识别区分为静态的人脸表情识别(static facial emotion recognition)和动态的人脸表情识别(dynamic facial emotion recognition)。前者希望通过单张图片辨别人的表情从而达到识别人情绪的目的,而后者希望感知视频/…

docker一键部署若依前后端分离版本

比如这里把文件放到/xin/docker/jiaoZ/的目录下&#xff0c;jar包和下面的配置文件都放在这个文件夹下。 注意要把jar端口改为你实际启动的&#xff0c;映射端口也可以改为你想要的。 这里的映射端口为&#xff1a;nginx监听80端口&#xff0c;jar在8620端口&#xff0c;mysq…

java并发编程之 volatile关键字

1、简单介绍一下JMM Java 内存模型&#xff08;Java Memory Model 简称JMM&#xff09;是一种抽象的概念&#xff0c;并不真实存在&#xff0c;指一组规则或规范&#xff0c;通过这组规范定义了程序中各个变量的访问方式。java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问…

C语言每日一题06

一、题目 二、解析 void main &#xff08;&#xff09; { char c1&#xff0c;c2&#xff1b; int a1&#xff0c;a2&#xff1b; c1 getchar &#xff08;&#xff09;&#xff1b;//读取第一个输入&#xff0c;c11 scanf &#xff08;“%3d”&#xff0c;&a1&#xff…