算法基础精选题单 模拟 (个人题解)

news2024/12/23 9:53:53

前言:

  从今天开始刷牛客上的这份题单,为暑假的牛客多校集训做准备,题单上一共有237道题,要想在集训开始前刷完难度还是很大的,但我一定会坚持下来,希望在这段时间内我能真正入门算法竞赛。接下来这三道题都与模拟有关,一般出现在比赛的一二题吧(比如蓝桥杯的填空),这三道题写下来我感觉虽然题目难度不是很大,但很需要时间和细心,而且基本要交上好几遍才能过。需要考虑的情况非常多,很容易就少考虑了,所以以后在面对这些题一定要多考虑情况,建议多写几个样例自己跑一下看看对不对(题干给的样例一定不会兼顾所有情况)。

正文:

题单:237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com)

字符串的展开:

  

#include<bits/stdc++.h>
using namespace std;
vector<char> v;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	string s;
	cin>>s;
    int cnt;
	for(int i=0;i<s.size();i++){
        cnt=v.size();
		if(s[i]!='-')v.push_back(s[i]);
		else{
            if(s[i-1]=='-'||s[i+1]=='-'){
                v.push_back('-');
				continue;
            }
            if(i==0||i==s.size()-1){
                v.push_back('-');
				continue;
            }
			if(s[i-1]==s[i+1]||abs(s[i+1]-s[i-1])>=40||s[i+1]<=s[i-1]){
				v.push_back('-');
				continue;
			}
			for(int k=s[i-1]+1;k<s[i+1];k++){
				//cout<<k<<endl;
				if(a==3){
					for(int j=1;j<=b;j++){
						v.push_back('*');
					}
				}
				if(a==1&&k>60){
					for(int j=1;j<=b;j++){
						v.push_back(char(k));
					}
				}
				if(a==2&&k>60){
					for(int j=1;j<=b;j++){
						v.push_back(char(k-32));
					}
				}
				if(a!=3&&k<60){
					for(int j=1;j<=b;j++){
						v.push_back(char(k));
					}
				}
			}
			if(c==2){
				reverse(v.begin()+cnt,v.end());
			}
		}
	}
	for(vector<char>::iterator it=v.begin();it!=v.end();it++){
		cout<<*it;
	}
	return 0;
}

  以下情况需要重点考虑:

  1. 开头和结尾的‘-’,如“-a-d-”
  2. 连续的‘-’,如“---”
  3. 数字和字母之间的‘-’,如“1-a”
  4. ‘-’左侧的字符大于右侧的,如“d-a

剩下的慢慢写就能搞出来了。

B 多项式输出:

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n+1;i++){
		cin>>a[i];
		if(i==1){
			if(a[i]==1){
				if(i==n+1)cout<<a[i];
				else cout<<"x^"<<n+i-1;
			}
			else if(a[i]==-1){
				if(i==n+1)cout<<'-'<<a[i];
				else cout<<"-x^"<<n+i-1;
			}
			else if(a[i]>1){
				if(i==n+1)cout<<a[i];
				else cout<<a[i]<<"x^"<<n+i-1;
			}
			else if(a[i]<-1){
				if(i==n+1)cout<<a[i];
				else cout<<a[i]<<"x^"<<n+i-1;
			}
			continue;
		}
		if(a[i]!=0){
			if(i==n+1){
				if(a[i]>0)cout<<'+'<<a[i];
				else cout<<a[i];
				break;
			}
			if(a[i]!=1&&a[i]!=-1){
				if(a[i]>0){
					if(n-i+1==1)cout<<'+'<<a[i]<<'x';
					else cout<<'+'<<a[i]<<"x^"<<n-i+1;
				}
				else if(a[i]<0){
					if(n-i+1==1)cout<<a[i]<<'x';
					else cout<<a[i]<<"x^"<<n-i+1;
				}
			}
			else{
				if(a[i]==1){
                    if(n-i+1==1)cout<<"+x";
                    else cout<<"+x^"<<n+1-i;
                }
				if(a[i]==-1){
                    if(n-i+1==1)cout<<"-x";
                    else cout<<"-x^"<<n-i+1;
                }
			}
		}
	}
	return 0;
}

从前往后依次处理每一项,依次考虑符号、系数、x、x的次数:

  1. 如果系数是0,则直接continue;
  2. 如果不是第一个非零项,且系数是正的,则输出'+';如果系数是负的,则无条件输出'-';
  3. 如果系数的绝对值不是1,或者是常数项,则输出系数的绝对值;
  4. 如果次数不为0,则输出x
  5. 如果次数大于1,则输出次数

C 机器翻译:

#include<bits/stdc++.h>
using namespace std;
vector<int> q;
int main(){
	int n,m,ans=0;
	cin>>m>>n;
	while(n--){
		int x;
		cin>>x;
		int flag=1;
		for(vector<int>::iterator it=q.begin();it!=q.end();it++){
			if(*it==x){
				flag=0;
				break;
			}
			//cout<<flag<<endl;
		}
		if(flag){
			ans++;
			if(q.size()==m){
				q.erase(q.begin());
				q.push_back(x);
			}
			else{
				q.push_back(x);
			}
		}
	}
	cout<<ans<<endl;
}

用vector来模拟翻译过程,若vector内没有该词,且大小没到m就直接加进最后,若满了就删去vector首项(最早进入内存)再加进最后。若vector内有该词就直接continue掉。

后记:

  总的来说我认为模拟考查的主要是讨论情况的能力,以及在代码量较大的情况下能够合理的按情况用合适的解法写出代码

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

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

相关文章

k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案

文章目录 OpenKruise简介OpenKruise来源OpenKruise是什么&#xff1f;核心组件有什么&#xff1f;有什么特性和优势&#xff1f;适用于什么场景&#xff1f; 什么是OpenKruise的原地升级原地升级的关键特性使用原地升级的组件原地升级的工作原理 应用环境一、OpenKruise部署1.安…

备忘录模式(大话设计模式)C/C++版本

备忘录模式 C #include <iostream> #include <string> using namespace std;// Memento类&#xff0c;备忘录&#xff0c;此处为角色状态存储箱 class RoleStateMemento { private:int m_vit; // 生命力int m_atk; // 攻击力int m_def; // 防御力 public:RoleStat…

基于SpringBoot+Vue流浪狗领养管理设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前&#xff0c;正在看博客的您先来…

如何更换OpenHarmony SDK API 10

OpenHarmony社区已经发布OpenHarmony SDK API 10 beta版本&#xff0c;有些 Sample案例 也有需要API10。那么如何替换使用新的OpenHarmony SDK API 10呢&#xff1f;本文做个记录。 1、如何获取OpenHarmony SDK 1.1 每日构建流水线 可以从OpenHarmony每日构建站点获取最新的…

【ARMv8/v9 GIC 系列 2 -- GIC SPI 中断的 enable和 disable 配置】

文章目录 GIC 中断 Enable 和 DisableGICD_ISENABLER<n>GICD_ICENABLER<n>参数 n使用举例代码实现注意事项 GIC 中断 Enable 和 Disable 在ARMv8架构中&#xff0c;通用中断控制器&#xff08;GIC&#xff09;负责管理处理器的中断。为了控制和管理这些中断&#…

SPI协议——对外部SPI Flash操作

目录 1. W25Q32JVSSIQ背景知识 1.1 64个可擦除块 1.2 1024个扇区&#xff08;每个块有16个扇区&#xff09; 1.3 页 1. W25Q32JVSSIQ背景知识 W25Q32JV阵列被组织成16,384个可编程页&#xff0c;每页有256字节。一次最多可以编程256个字节。页面可分为16组(4KB扇区清除&…

排序方法——《归并排序》

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …

chatgpt: linux 下用纯c 编写ui

在Linux下用纯C语言编写用户界面&#xff08;UI&#xff09;&#xff0c;通常会使用GTK或Xlib。GTK是一个更高级的库&#xff0c;提供了丰富的控件和功能&#xff0c;而Xlib则是一个更底层的库&#xff0c;提供了直接操作X Window系统的功能。 下面是一个使用GTK在Linux上创建…

第二十四节:带你梳理Vue2 : Vue具名插槽/作用域插槽/v-slot指令

1. 具名插槽 1.1 没有使用具名插槽的问题 有的时候我们在使用子组件时,在子组件模板上不同的位置插入不同的内容, 只有一个插槽显然没法满足我们的需求,看示例: 需求如下: 子组件是一篇文章的结构父组件在调用子组件是给文章插入标题,正文,时间信息 示例代码如下: <di…

随机森林算法详解

随机森林算法详解 随机森林&#xff08;Random Forest&#xff09;是一种集成学习方法&#xff0c;通过构建多个决策树并将它们的预测结果结合起来&#xff0c;来提高模型的准确性和稳定性。随机森林在分类和回归任务中都表现出色&#xff0c;广泛应用于各类机器学习问题。本文…

MySQL功能测试-之应用工程

MySQL功能测试-之应用工程 前言pom.xmlapplication.yml 文件common.vo 包ResultVO config 包properties 包DruidConfigPropertyDruidMonitorProperty AutoFillMetaObjectHandlerDruidConfigFluxConfigurationMyBatisPlusConfig controller 包ClientControllerDruidControllerWe…

Python开发日记--手撸加解密小工具(2)

目录 1. UI设计和代码生成 2.运行代码查看效果 3.小结 1. UI设计和代码生成 昨天讨论到每一类算法设计为一个Tab&#xff0c;利用的是TabWidget&#xff0c;那么接下来就要在每个Tab里设计算法必要的参数了&#xff0c;这里我们会用到组件有Label、PushButton、TextEdit、Ra…

RSA 加密算法的基础数论、基本原理与 Python 实现

Title: RSA 加密算法的基础数论、基本原理与 Python 实现 文章目录 前言I. 数学原理1. 整数环2. 单位元3. 欧拉定理 II. 算法原理1. 扩展欧几里得算法2. RSA 非对称加密算法 III. 算法实现1. 源代码2. 测试结果 总结参考文献 前言 1977 年美国 MIT 的三位数学家 Ronald L. Riv…

gunicorn超时报错[CRITICAL] WORKER TIMEOUT

一. 问题描述 2024-06-18T08:40:39.858804039Z [2024-06-18 08:40:39 0000] [1] [CRITICAL] WORKER TIMEOUT (pid:332) 2024-06-18T08:40:40.918093090Z [2024-06-18 08:40:40 0000] [1] [ERROR] Worker (pid:332) was sent SIGKILL! Perhaps out of memory?二. 原因分析 从…

企业如何做好供应链管理工作?8个步骤及应用详解!

供应链就是采购把东西买进来&#xff0c;生产去加工增值&#xff0c;物流去配送给客户&#xff0c;环环相扣&#xff0c;就形成了供应链。它是将供应商&#xff0c;制造商&#xff0c;分销商直到最终用户连成一个整体的功能网链结构。 而供应链管理就是做好每个环节的管理&…

前沿重器[50] | 聊聊搜索系统3:文档内容处理

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

【Maven】项目的Maven插件报错

1. 找到本地maven库 2. 删除本地插件 3. 在IDEA上更新pom.xml

【简易版tinySTL】 deque容器

文章目录 基本概念功能思路数据结构循环数组实现 代码实现deque.htest.cpp 代码详解变量push_frontpush_backpop_front、pop_backoperator[]clearprintElementsresize 本实现版本 和 C STL标准库实现版本的区别&#xff1a; 基本概念 功能&#xff1a; 双端数组&#xff0c;可…

300PLC连接Modbus转Profibus网关与阀岛modbusRTU通讯

一、概况 300PLC作为常见的控制器设备&#xff0c;在与阀岛Modbus RTU通讯时&#xff0c;通常需要借助Modbus转Profibus网关&#xff08;XD-MDPB100&#xff09;来实现连接和数据交换。PLC通过Modbus转Profibus网关&#xff08;XD-MDPB100&#xff09;与阀岛Modbus RTU通讯是比…