蓝桥杯(C++ 左移右移 买二增一 松散子序列 填充 有奖问答 更小的数 )

news2024/11/17 17:49:00

目录

左移右移

思路:

代码: 

买二增一 

思路:

代码: 

 松散子序列

思路:

代码:

 填充

思路:

代码 :

 有奖问答

思路:

代码: 

更小的数

思路:

代码:

左移右移

思路:

1、用权重的思路,初始权值为该数值

2、将改变权值初始为cval=n+1,当之后出现某数,

      为L则,权值赋为-cval, cval++;

      为R则,权值赋为cval,cval++。

3、最后根据权值排序

代码: 

#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
	int num;
	int val;
}a[200010];
bool cmp(node a,node b)
{
	return a.val < b.val;
}
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		a[i].num = i;
		a[i].val = i;
	}
	int cval = n + 1;
	while (m--)
	{
		int t;
		char b;
		cin >> b >> t;
		if (b == 'L')
		{
			a[t].val = -cval;
			cval++;
		}
		else
		{
			a[t].val = cval;
			cval++;
		}
	}
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++)
		cout << a[i].num << " ";
}

买二增一 

思路:

 1、用一个优先队列q(大根堆)存储价格

 2、再用一个队列cost存储,每买两个可以赠送的最大价格,当cost的队头大于等于q的队头,说明该q队头价格可以赠送,直接出队。

 3、用ans存储总价格

代码: 

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
int main()
{
	priority_queue<ll> q, cost;
	int n,t;
	cin >> n;
	while (n--)
		cin >> t, q.push(t);
	ll ans = 0;
	while (!q.empty())
	{
		while (!cost.empty() && !q.empty() && cost.top() >= q.top())
			cost.pop(), q.pop();
		int maxp=0, minp=0;
		if (!q.empty())
			maxp = q.top(), q.pop();
		while (!cost.empty() && !q.empty() && cost.top() >= q.top())
			cost.pop(), q.pop();
		if (!q.empty())
			minp = q.top(), q.pop();
		//cout << maxp << " " << minp;
		ans += maxp + minp;
		cost.push(minp / 2);
	}
	cout << ans;
}

 松散子序列

思路:

1、用一个动态规划

代码:

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
int main()
{
	string s;
	cin >> s;
	int dp[1000005] = { 0 };
	dp[0] = s[0] - 'a' + 1;
	dp[1] = max(dp[0], s[1] - 'a' + 1);
	for (int i = 2; i < s.length(); i++)
	{
		dp[i] = max(dp[i - 1], dp[i - 2] + (s[i] - 'a' + 1));
	}
	cout << dp[s.length() - 1];
}

 填充

思路:

1、用flag记录是否是00或者11子串

2、从第二个开始,用这一个与前一个比较是否相等(偶数比奇数)

代码 :

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
int main()
{
	string s;
	cin >> s;
	int flag[10000005];
	ll ans = 0;
	for (int i =1; i < s.length(); i++)
	{
		if (flag[i - 1])
			continue;
		if (s[i] == s[i - 1] || s[i - 1] == '?' || s[i] == '?')
		{
			flag[i] = 1;
			ans++;
		}
	}
	cout << ans;
}

 有奖问答

思路:

1、用动态规划

2、分两种情况:

      第一种:第i题没有做对,方案数等于i-1题的所有方案数和

      第二种:第i题做对,得到j分,方案数等于上一题方案数得j-10分的方案数

3、当得分为70时,加上该可能的所有方案数

代码: 

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
int main()
{
	ll ans = 0;
	int dp[35][100] = { 0 };
	dp[1][0] = dp[1][10] = 1;//第一题可能得10分或者0分
	for(int i=2;i<=30;i++)//从第二题开始到三十题
		for (int j = 0; j <= 90; j += 10)//0到90的方案数
		{
			if (j == 0)//该题没做对,方案数等于i-1题的所有方案数
			{
				for (int k = 0; k <= 90; k += 10)
				{
					dp[i][0] += dp[i - 1][k];
				}
			}
			else//该题做对了,方案数等于上一题做完该题得多少分-10的方案数
			{
				dp[i][j] = dp[i - 1][j - 10];
				if (j == 70) ans += dp[i][j];//等于70,方案数加上
			}
		}
	cout << ans;
}

更小的数

 

思路:

1、用动态规划

代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
int main()
{
	string s;
	cin >> s;
  int dp[5010][5010];
	s = " " + s;
	for (int i = 2; i < s.length(); i++)
	{
		for (int j = 1; j + i - 1 < s.length(); j++)
		{
			int l = j, r = j + i - 1;
			if (s[l] == s[r])
				dp[l][r] = dp[l + 1][r - 1];
			else if (s[l] < s[r])
				dp[l][r] = 0;
			else
				dp[l][r] = 1;
		}
	}
	ll ans = 0;
	for (int i = 1; i < s.length(); i++)
		for (int j = i; j < s.length(); j++)
			ans += dp[i][j];
	cout << ans;
}

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

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

相关文章

【快影】怎么制作卡拉OK字幕

您好&#xff0c;您添加了字幕之后可以添加动画&#xff0c;选择卡拉OK&#xff0c;其中 卡拉OK1是支持修改颜色的&#xff0c;卡拉OK2只支持修改文字的底色。

OpenCV使用基础、技巧

OpenCV概述与安装 视觉概述 人类的视觉能够很轻易地从图像中识别出内容。但是&#xff0c;计算机视觉不会像人类视觉那样能够对图像进行感知和识别&#xff0c;更不会自动控制焦距和光圈&#xff0c;而是把图像解析为按照栅格状排列的数字。 这些按照栅格状排列的数字包含大量…

Java中Integer(127)==Integer(127)为True,Integer(128)==Integer(128)却为False,这是为什么?

文章目录 1.前言2. 源码解析3.总结 1.前言 相信大家职业生涯中或多或少的碰到过Java比较变态的笔试题&#xff0c;下面这道题目大家应该不陌生&#xff1a; Integer i 127; Integer j 127;Integer m 128; Integer n 128;System.out.println(i j); // 输出为 true System.o…

华为数通方向HCIP-DataCom H12-831题库(判断题:121-140)

第121题 BGP/MPLS IP VPN内层采用MP-BGP分配的标签区分不同的VPN实例,外层可采用多种隧道类型,例如GRE隧道。 正确 错误 答案: 错误 解析: VPN业务的转发需要隧道来承载,隧道类型包括GRE隧道、LSP隧道、TE隧道(即CR-LSP)。 如果网络边缘的PE设备具备MPLS功能,但骨干网核…

Deepin基本环境查看(四)【硬盘/分区、文件系统、硬连接/软连接】

Linux操作系统(Deepin、Ubuntu&#xff09;操作系统中&#xff0c;硬盘分区的管理与Windows操作系统不同&#xff1b; 在Linux系统中维护着一个统一的文件目录体系&#xff0c;而硬盘和分区是以资源的形式由操作系统挂接和调度&#xff1b;此外Linux系统中连接&#xff08;硬连…

UE创建数据表格

创建一个数据表格需要行结构 继承自FTableRowBase的一个子类 效果 如何使用它 在蓝图中给C该类型的指针变量选用 UDataTable类型的 FindRow()函数可查询并返回对应行的行结构 FTableRowBase GetAllRows()函数可以获得该数据表的所有行、

全面解析开源大语言模型:BLOOM

大型语言模型 &#xff08;LLM&#xff09; 的兴起一直是自然语言处理 &#xff08;NLP&#xff09; 领域的一个决定性趋势&#xff0c;导致它们在各种应用程序中的广泛采用。然而&#xff0c;这种进步往往是排他性的&#xff0c;大多数由资源丰富的组织开发的 LLM 仍然无法向公…

手动搭建koa+ts项目框架(apidoc文档篇)

文章目录 一、安装apidoc工具二、使用1、项目根目录新建apidoc.json2、定义接口路由上方注解对应信息3、配置静态文件访问目录4、生成api文档如有启发&#xff0c;可点赞收藏哟~ 一、安装apidoc工具 全局安装 npm i apidoc -g查看是否安装成功 apidoc -v二、使用 1、项目根…

面向社交网络语言隐写分析

论文&#xff1a;Linguistic Steganalysis Toward Social Network 发表在&#xff1a;IEEE Transactions on Information Forensics & Security是网络与信息安全领域的国际两大顶级期刊之一&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的A类期刊&#xff0c…

第一篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:从helloworld开始理解鸿蒙开发ArkTS编程思路

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录一、前言二、初步解读鸿蒙的helloworld三、进一步深入解读理解 系列短博文目录 鸿蒙开发技术点案例示例系列 短博文目录 一、前言 从掰碎了揉烂了详细注释解读helloworld开始&#xff0c;理解Ark…

matlab appdesigner系列-容器2-选项卡组

所谓容器&#xff0c;就是可以放置常有组件的空间&#xff0c;类似一种画布。默认背景画布就是一张画布&#xff0c;选项卡组&#xff0c;可以同时增加好几个画布空间&#xff0c;以满足不的组件放置需求。 1&#xff09;将选项卡组拖拽到画布上 2&#xff09;将选项卡组拉大背…

linux-centos服务器离线安装yapi(包含nodejs、mongodb、yapi、pm2离线安装)

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …

10.多柱状图(MuliBarChart)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 话接上回&#xff08;9.单柱状图&#xff08;SingleBarChart&#xff09;&#xff09;&#xff0c;从单柱拓展到多柱状图。 1.数据设置 private void InitValue(List<BasicSerieDto> dtos){Serie…

EXCEL VBA调用adobe的api识别电子PDF发票里内容并登记台账

EXCEL VBA调用adobe的api识别电子PDF发票里内容并登记台账 代码如下 使用须知&#xff1a; 1、工具--引用里勾选[Adobe Acrobat 10.0 Type Library] 2、安装Adobe Acrobat pro软件Dim sht As Worksheet Function BrowseFolders() As String 浏览目录Dim objshell As ObjectDim…

ORM-08-EclipseLink 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.&#xff08;手写简易版 mybatis&#xff09; 1. EclipseLink概述 本章介绍了EclipseLink及其关键特性&#xff1a;包括在EclipseLink中的组件、元数据、应用程序架构、映射和API。 本…

202|读书笔记《金融的本质:伯南克四讲美联储》

今天跟朋友聊天&#x1f4ac;&#xff0c;说已经没人看书了&#x1f4d6; 我想&#xff0c; 还是会有人读书的吧。 ​ 一、美联储的起源和使命 1. 第一讲&#xff1a;美国南北战争结束后的40年间&#xff0c;美国经历了6次大的银行体系恐慌&#xff0c;促使其于1913年成立美联储…

如何在Word中选择多个图片?这里提供两个方法及详细步骤

你的Word文档中可能有一些图片。要更改图片的几个参数,可以逐个编辑它们。当你有更多的图片时,你可能需要一次选择所有图片。这允许你一次更改所有内容。默认情况下,Word不允许你一次选择多张图片。 Word插入图片的两个布局选项 文字环绕 嵌入文本中 默认情况下,Word会在文…

注册表学习——注册表结构

简介&#xff1a;注册表是由很多项和值构成的。 HEKY_USERS&#xff08;HKU&#xff09; 主要保存默认用户及当前登录用户配置信息。 .DEFAULT 该项是针对未来创建的新用户所保存的默认配置项。 S-1-5-18等项 这些项叫作安全标识符&#xff08;SID&#xff09;用来表示Windows操…

初识C语言·自定义类型(2)

目录 1 结构体的声明和定义 2 结构体的自引用 3 结构体成员访问操作符 4 内存对齐 4 结构体传参 5 位段 1 结构体的声明和定义 什么是结构&#xff1f;结构也就是元素的集合&#xff0c;在C语言里面&#xff0c;结构体里面的可以有多个变量&#xff0c;类似于集合中的元素…

下载并安装nacos 2.3 for arm64

客户组织安全测试&#xff0c;我们系统测出了好几个高危问题&#xff0c;其中大部分是关于nacos的。 原先的nacos版本太低了&#xff0c;是1.3的。现在&#xff08;2024.01&#xff09;已经是2.3了&#xff0c;应该装个新的。我们使用docker安装nacos&#xff0c;原本很简单的…