第十四届蓝桥杯b组c/c++

news2024/11/26 11:51:16

 

D:飞机降落(全排列)

 

#include<iostream>
#include<cstring>
using namespace std;

const int N = 12;
int n;
struct node{
    int t, d, l;  //t为此飞机的最早降落时间 d为盘旋时间 l为降落所需时间
}p[N];
bool st[N];

//DFS求全排列模型
bool dfs(int u, int last){
    if(u == n) return true;

    for(int i = 0; i < n; i ++ ){
        int t = p[i].t, d = p[i].d, l = p[i].l;
        if(st[i]) continue;
        if(t + d >= last){  //最晚降落时间t+d大于等于上一层的降落结束时刻
            st[i] = true;
            if(dfs(u + 1, max(last, t) + l)) return true; //当前层的最早降落结束时刻为max(last,t)+l
            st[i] = false;
        }
    }

    return false;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int T; cin >> T;
    while(T -- ){
        cin >> n;
        for(int i = 0; i < n; i ++ ){
            int t, d, l; cin >> t >> d >> l;
            p[i] = {t, d, l};
        }

        memset(st, 0, sizeof(st));
        cout << (dfs(0, 0) ? "YES" : "NO") << endl;
    }

    return 0;
}

E:接龙数列(最长上升子序列)

 

要求使得数列变成接龙数列的最少删除个数, 相当于求该数列的最长接龙子数列的长度, 用总长度减去最长接龙长度即为最少删除个数。

定义dp[i][j]为前i个数中, 以数字j结尾的最长接龙数列的长度。

设第i个数的首位数字是a, 末位数字是b。 则dp[i]中相对于dp[i−1]
可能发生变化的只有dp[i][b]

, 因为第i个数只可能加到一个以a结尾的接龙数列中, 使得这个接龙数列长度加1并且结尾数字变成b.

所以状态转移方程为dp[i][b] = max(dp[i - 1][b], dp[i - 1][a] + 1)

而显然第一维可以优化掉。

#include <bits/stdc++.h>
using namespace std;
int dp[10];

int main () {
    int n, mx = 0; cin >> n;
    for (int i = 0; i < n; i ++) {
        string s; cin >> s;
        int a = s[0] - '0', b = s.back() - '0';
        dp[b] = max(dp[b], dp[a] + 1), mx = max(mx, dp[b]);
    }
    cout << n - mx << endl;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N],dp[N];
int t[11];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		dp[i]=1;
		a[i]=x%10;
		while(x>9)
		x/=10;
		b[i]=x;
}
	int maxx=0;
	for(int i=1;i<=n;i++)
{
    dp[i]=max(dp[i],t[b[i]]+1);
	t[a[i]]=max(t[a[i]],dp[i]);
	maxx=max(dp[i],maxx);
}
	cout<<n-maxx;
}

 

 F:岛屿个数(双重bfs)

 

#include<bits/stdc++.h>
using namespace std;
const int N=55;
int n,m;
string a[N];
bool v[N][N],use[N][N];
int dx[]={-1,1,0,0,-1,-1,1,1},dy[]={0,0,-1,1,-1,1,-1,1};
void bfs_col(int x,int y)//染色 
{
	v[x][y]=1;
	queue<int>qx,qy;
	qx.push(x),qy.push(y);
	while(!qx.empty())
	{
		x=qx.front(),y=qy.front();
		qx.pop(),qy.pop();
		for(int i=0;i<4;i++)
		{
			 int xx=x+dx[i],yy=y+dy[i];
			if(xx<0||xx>=n||yy<0||yy>=m||v[xx][yy]||a[x][y]=='0')continue;
			v[xx][yy]=1;
			qx.push(xx),qy.push(yy);
		}
	}
}
bool bfs_out(int x,int y)//判断能否出去 
{
	for(int i=0;i<n;i++)
	for(int j=0;j<m;j++)
	use[i][j]=0;
	
	queue<int>qx,qy;
	qx.push(x),qy.push(y);
	use[x][y]=1;
	
	while(!qx.empty())
	{
		x=qx.front(),qx.pop();
		y=qy.front(),qy.pop();
		if(x==0||x==n-1||y==0||y==m-1)return true;
		for(int i=0;i<8;i++)
		{
			int xx=x+dx[i],yy=y+dy[i];
			if(xx<0||xx>=n||yy<0||yy>=m||a[xx][yy]=='1'||use[xx][yy])continue;
			qx.push(xx),qy.push(yy),use[xx][yy]=1;
		}
	}
	return false;	
}
void solve()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		for(int j=0;j<m;j++)
		v[i][j]=0;	
	}
	int ans=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		if(!v[i][j]&&a[i][j]=='1')
		{
			bfs_col(i,j);
			if(bfs_out(i,j))ans++;
		}
	}
	cout<<ans<<endl;
}
int main()
{
	int T;
	cin>>T;
	while(T--)solve();
	return 0;
}

H:整数删除 (堆+双链表)

 感觉是比较典的题目,用优先队列维护,存入值和下标,再用一个数组cnt累计每个下标增加的和,当弹出最小的值下标为 i 时,如果此时cnt[i]不等于0,说明它实际的值需要加上cnt[i],我们将其增加后再放回优先对列,注意需要清空cnt[i]。如果此时cnt[i]等于0,那我们就成功弹出当前最小元素,这时需要将其前一个元素和后一个元素值增加,我们需要模拟链表去记录每个元素的前后元素是谁,pre[i]表示下标为i的上一个元素是谁,ne[i]表示下标为 i 的下一个元素是谁,直到堆的元素个数只剩n-k时结束循环。不难想象,堆元素的出入次数是线性的。

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
typedef long long LL;
typedef pair<LL,int> PII;
LL cnt[N]; 
int pre[N],ne[N];
int n,k;
void solve()
{
	priority_queue<PII,vector<PII>,greater<PII>>q;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		LL v;
		cin>>v;
		q.push({v,i});
		pre[i]=i-1;
		ne[i]=i+1;
	}
	int g=n-k;
	while(q.size()>g)
	{
		auto p=q.top();
		q.pop();
		LL v=p.first,i=p.second;
		if(cnt[i])
		{
			q.push({v+cnt[i],i});
			cnt[i]=0;
		}
		else
		{
			int l=pre[i],r=ne[i];
			cnt[l]+=v;
			cnt[r]+=v;
			pre[r]=l;
			ne[l]=r;
		}
	}
	vector<LL> a(n+1);
	for(int i=0;i<g;i++)
	{
		auto p=q.top();
		q.pop();
		a[p.second]=p.first+cnt[p.second];
	}
	for(int i=1;i<=n;i++)
	if(a[i])
	cout<<a[i]<<" ";
}
int main()
{
	solve();
	return 0;
}


 

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

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

相关文章

【真题解析】系统集成项目管理工程师 2021 年下半年真题卷

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题&#xff0c;包含答案与详细解析。考试共分为两科&#xff0c;成绩均 ≥45 即可通过考试&#xff1a; 综合知识&#xff08;选择题 75 道&#xff0c;75分&#xff09;案例分析&#xff08;问答题 4 道&#xff0c;75…

ChatGPT 学习与使用总结

ChatGPT 学习与使用总结 最近ChatGPT大火&#xff0c;2023有可能就是AGI元年了。近两个月使用下来&#xff0c;ChatGPT给我最深刻的感觉就是它所具备的理解和思维能力&#xff0c;第一次体验时真的是非常震撼&#xff0c;完全是之前各种『人工智障』智能助理所不能比拟的&…

Windows系统出现蓝屏怎么办?这些方法可以修复!

Windows 系统蓝屏死机&#xff08;BSOD&#xff09;&#xff0c;也被称为“停止错误”&#xff0c;是Windows系统最常见的故障之一。 当Windows遇到严重的故障时就会显示蓝屏&#xff0c;系统崩溃。蓝屏上显示一个停止代码&#xff0c;如"MEMORY_MANAGEMENT"&#xf…

NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

前言 关于该系列专栏&#xff0c;主要介绍NeRF在三维重建中的应用&#xff08;这里我们特指MVS&#xff0c;multi-view stereo&#xff0c;也即输入带位姿的图片&#xff0c;输出三维结构例如点云、mesh等&#xff1b;并且后面的工作也都是围绕MVS with NeRF讨论的。虽然也有w…

人类与ChatGPT:互动中的共同进步

一、ChatGPT的发展历程 1. GPT模型 ChatGPT是由OpenAI推出的一款聊天机器人&#xff0c;其核心技术基于GPT模型。GPT模型&#xff08;Generative Pre-training Transformer&#xff09;是一种基于Transformer结构的预训练语言模型。它在大规模的文本语料库上进行无监督的预训…

解析 ip addr 的输出的内容含义

解读 ip addr 的输出的网络连接信息含义 一、ifconfig 与 ip addr 用过Linux的读者都知道&#xff0c;在Linux查看ip可以使用ifconfig&#xff0c;当然这个ifconfig属于net-tools 工具集&#xff0c;其来源于BSD&#xff0c;Linux从2001年就不对其进行维护了。那我们应该用什…

基于下垂控制的并网逆变器控制MATLAB仿真模型

资源地址&#xff1a; 基于下垂控制的并网逆变器控制MATLAB仿真模型资源-CSDN文库 主要模块&#xff1a; 建议使用MATLAB2021b及以上版本打开&#xff01; 功率计算模块、下垂控制模块、电压电流双环控制模块、虚拟阻抗压降模块 扰动设置&#xff1a; 在0.5秒到2秒始端设置…

微软出品的实用小工具

微软出品的实用小工具 分享一些微软出品的实用小工具&#xff0c;希望对大家有所帮助。 文章目录 微软出品的实用小工具SysinternalsSuite常用工具AutorunsprocdumpProcess Explorer进程监视器 Process MonitorpsloggedonAccessChk示例 PsToolsrdcmanTcpviewVmmap Sysinternals…

数据结构_树与二叉树

目录 1. 树的基本概念 1.1 树的定义 1.2 基本术语 1.3 树的性质 1.4 相关练习 2. 二叉树的概念 2.1 二叉树的概念及其主要特性 2.2 二叉树的存储结构 2.2.1 顺序存储结构 2.2.2 链式存储结构 2.3 相关练习 3. 二叉树的遍历和线索二叉树 3.1 二叉树的遍历 3.1.1 先…

基于微信小程序校内论坛系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&a…

神马网络——IP地址

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

ChatGPT提示词技巧

自计算机问世以来&#xff0c;人类与计算机之间的交互方式已经经历过几个重要的阶段&#xff1a; 指令式交互&#xff08;Command-based Interaction&#xff09; 早期的计算机系统主要采用了指令式交互方式&#xff0c;用户需要输入特定的命令或代码来完成各种任务。这种交…

软件与硬件的联调之小程序与云平台相互通信

软件与硬件的联调之小程序与云平台相互通信 本人专注使用云开发&#xff0c;实现一个前端可以做后端以及整个项目的部署与上线。 如果觉得我讲的好就可以给我点个赞。 #mermaid-svg-xJRh48GCcG2gzlqz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…

深度学习之图像分类识别(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…

我的第一个Electron应用

hello&#xff0c;好久不见&#xff0c;最近笔者花了几天时间入门Electron&#xff0c;然后做了一个非常简单的应用&#xff0c;本文就来给各位分享一下过程&#xff0c;Electron大佬请随意~ 笔者开源了一个Web思维导图&#xff0c;虽然借助showSaveFilePicker等api可以直接操…

【C#】接口实现多态增强版

背景 在实际的生产中&#xff0c;会涉及到需要对接多种相似性较高的系统。具体而言就是业务接口是相同的&#xff0c;但是会出现接口的参数不同的情况。这时做一个对接隔离层就显得优势很明显了。这个隔离层的作用就有了两个基本的作用&#xff1a; 1、单一性&#xff0c;保护我…

【网络】- TCP/IP四层(五层)协议 - 物理层

目录 一、概述 二、物理层的基本概念 三、OSI 参考模型  &#x1f449;3.1 导引型传输媒体  &#x1f449;3.1 导引型传输媒体 一、概述 TCP/IP 在最初定义时&#xff0c;是一个四层的体系结构&#xff0c;包括应用层、传输层、网络层、网络接口层。不过从实质上来讲&#xf…

Makefile基础教程(变量的高级主题,变量的拓展)

文章目录 前言一、变量值的替换1.简单替换2.模式替换1.变量的模式替换2.规则中的模式替换 二、变量值的嵌套三、命令行变量四、define和override五.环境变量六.局部变量七.模式变量 总结 前言 本篇文章将给大家讲解一下变量的高级主题&#xff0c;变量的拓展&#xff0c;这些主…

详解C++类和对象(下篇)

目录 一&#xff0c;再谈构造函数 1.1 构造函数体赋值 1. 2 初始化列表 1.21 自定义类型成员 1.22 const 成员变量 1.23 引用成员变量 1. 24 初始化列表的“坑” 1. 3 explicit 关键字 二&#xff0c;static 成员 2.1 概念 2.2 特性 三&#xff0c; 友元 3.…

阿里云数据库RDS MySQL Serverless测评

文章目录 1. 背景2. 概念3. 操作步骤3.1 购买产品3.2 配置RDS账号3.3 设置网络访问权限3.4 连接实例 4. 与自建数据库相比的优势4.1 弹性设置4.2 监控比较直观4.3 报警比较灵活4.4 备份更安全、更方便 5. 总结 1. 背景 作为一枚程序员&#xff0c;在日常工作中少不了跟云产品打…