第五届太原理工大学程序设计竞赛新生赛(初赛)题解
第五届太原理工大学程序设计竞赛新生赛(初赛)题解
时隔半年重做一次,还是有几道不会,,,,,
⭐️A.饿饿饭饭
题目:
🌟题解:
很简单,签个到输出谁饿了
代码:
#include<iostream>
using namespace std;
int main()
{string s; cin>>s;cout<<s<<":eeff";
}
⭐️B.扣点点
题目:
🌟题解:
hammer喜欢玩扣点点但太菜了理不清牌(doge),让你帮忙按一定顺序整理,典型的排序吧
代码:
1.这种字符串数组排序较为简单
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 15;
string s[N];
int main()
{int n; cin>>n;for(int i = 0;i<n;i++) {char j[2];cin>>j[1]>>j[0];s[i] += j[0];s[i] += j[1];}sort(s,s+n);for(int i = 0;i<n;i++) {cout<<s[i][1]<<s[i][0]<<' ';}return 0;
}
2.标记法
#include <iostream>
using namespace std;
const int N = 15;
int cnt[4][10];
int main() {int n;cin >> n;for (int i = 1; i <= n; ++i) {int num;char s;cin >> num >> s;int id;if (s == 'B') id = 0;else if (s == 'C') id = 1;else id = 2;cnt[id][num]++;}for (int i = 0; i < 3; ++i) { for (int j = 1; j <= 9; ++j) {for (int k = 0; k < cnt[i][j]; ++k) { //可能这里不好理解,就是看k+到比cnt这大就是cnt-反过来也可以写成while(cnt[i][j]--&&cnt>0)cout << j << (i==0 ? 'B' : i==1 ? 'C' : 'D') << " "; }}}cout << endl;return 0;
}
3.自己写个结构体排序
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{char x,y;
}a[15];
bool cmp(node q,node p){if(q.y!=p.y)return q.y<p.y;else return q.x<p.x;
}
string s;
int main(){cin>>n;for(int i=0;i<n;i++){cin>>s;a[i].x=s[0];a[i].y=s[1];}sort(a,a+n,cmp);for(int i=0;i<n;i++){cout<<a[i].x<<a[i].y<<" ";}
}
4.利用mulimap性质(某孙神的)
#include <bits/stdc++.h>
using namespace std;
int main(){multimap<char,char>mp;multimap<char,char>ans;int n;cin>>n;while(n--){char ch;char temp;cin>>temp>>ch;mp.insert({temp,ch});}for(auto it=mp.begin();it!=mp.end();it++){ans.insert(pair<char,char>(it->second,it->first));}for(auto it=ans.begin();it!=ans.end();it++){cout<<it->second<<it->first<<" ";}return 0;
}
⭐️String problem
题目:
🌟题解:
也很简单的一道,比较三个字符串字符就行,2个一样就改一次,都不一样就改两次,
代码:
#include<iostream>
using namespace std;
int n;
string s1,s2,s3;
int ans;
int main()
{cin>>n;cin>>s1>>s2>>s3;for(int i=0;i<n;i++){if(s1[i]==s2[i] && s1[i]==s3[i]) continue;else if(s1[i]==s2[i] || s1[i]==s3[i] || s2[i]==s3[i]) ans++;else ans+=2;}cout<<ans<<endl; return 0;
}
⭐️D.数豆豆
题目:
🌟题解:
考察一下思维吧,其实也很简单,就是每次拿大的数字,排下序就好了
代码:
#include <iostream>
#include <string>
#include<algorithm>
using namespace std;
int main()
{string s;cin>>s;sort(s.begin(),s.end());reverse(s.begin(),s.end());string s1,s2;for(int i=0;i<s.size();++i){if(i%2==0)s1=s1+s[i];elses2=s2+s[i];}if(s1[0]=='0') s1="0";if(s2[0]=='0') s2="0";cout<<s1<<endl;cout<<s2<<endl;return 0;
}
⭐️E.Another string problem
题目:
🌟题解:
也是挺简单的,呆梨同学们都可以报名新生赛体验今年12月。就判断下是否两个字符串只有一个字符不一样就行,注意中间缺字符或者多字符也是可以的,那么就有三种情况,字符一样长,不一样长是删除还是增加(差距为1),还有差距大于1了因为只能改一次肯定不行。
代码:
#include<bits/stdc++.h>
using namespace std;
int main() {string s, t;cin >> s ; cin>>t;int n = s.size(), m = t.size();if (abs(n-m) > 1) cout << "NO" << endl;else if (n == m) {int cnt = 0;for (int i = 0; i < n; ++i)if (s[i] != t[i] && ++cnt > 1) {cout << "NO" << endl; return 0;}cout << "YES" << endl;} else { int i, j,cnt=0;for (i = 0, j = 0; i < n && j < m; ++i, ++j) {if (s[i] != t[j]) {if (n > m) --j;else --i;if (++cnt > 1) {cout << "NO" << endl; return 0;}}}if (i < n || j < m) ++cnt;cout << (cnt == 1 ? "YES" : "NO") << endl;}return 0;
}
⭐️F.迷失的Syuggie
题目:
🌟题解:
也是一道典型的bfs题
网格由字符的二维数组"f"表示,其中"#“表示障碍物,”."表示空白格子。算法从起始点(标记为’S’)开始,探索所有可能的路径,直到达到目标点(标记为’T’)或者在给定的步数限制"k"内探索完所有可能的路径。最短路径长度存储在变量"ans"中,每当找到一条更短的路径时,它就会被更新。最后,最短路径长度被打印出来。
代码:
#include <iostream>
#include <queue>
using namespace std;
const int N=1010;
typedef pair<int,int> PII;
struct point {int x,y,step;
};
queue<point> q;
char f[N][N];
int x[]={-1,0,1,0},y[]={0,1,0,-1};
int n,m,k;
int sx,sy,tx,ty;
int ans=1e6;
int bfs()
{q.push({sx,sy,0});f[sx][sy]='#';while(q.size()){auto t=q.front();q.pop();if(t.step<=k) {ans=min(ans,abs(t.x-tx)+abs(t.y-ty));}for(int i=0;i<4;i++){int a=t.x+x[i],b=t.y+y[i];if(a>=1&&a<=n&&b>=1&&b<=m&&f[a][b]!='#'){q.push({a,b,t.step+1});f[a][b]='#';}}}return ans;
}
int main()
{cin>>n>>m>>k;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){char c;cin>>c;if(c=='T'){tx=i;ty=j;}else if(c=='S'){sx=i;sy=j;}f[i][j]=c;}cout<<bfs()<<endl;return 0;
}
⭐️G.寻找签到题之路
题目:
🌟题解:
一眼典型背包dp,直接写就好。。。。就是时间有限要得分最大,每个题目时间也知道。总时间就是背包,每个题目分数就是价值,时间就是重量。不过也有大佬别的做法
代码:
1.
#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
int t[N],s[N];
int f[N][N];
int main()
{int n, m; cin >> n >> m;for(int i = 1; i <= n; i++) cin >> s[i] >> t[i];for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++){if(j < t[i]) f[i][j] = f[i - 1][j];else f[i][j] = max(f[i - 1][j], f[i - 1][j - t[i]] + s[i]);} cout << f[n][m] << endl;return 0;
}//正的
#include<iostream>
using namespace std;
const int N = 1000005;
int n,m;
int f[N];
int v,w;
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>w>>v;for(int j=m;j>=v;j--){f[j]=max(f[j],f[j-v]+w);}}cout<<f[m]<<endl;return 0;
}//逆的
2.dfs来自dy
#include<bits/stdc++.h>
using namespace std;
int t, n;
int s[21], ti[21];
int maxn;
void dfs(int time, int score, int tit) {if (time <0)return;if (tit == n){maxn = max(maxn, score);return;}dfs(time,score,tit+1);dfs(time-ti[tit],score+s[tit],tit+1);return;
}
int main() {cin >> n >> t;for (int i = 0; i < n; i++) {cin >> s[i] >> ti[i];}dfs(t, 0, 0);cout << maxn;
}
⭐️H.子矩阵和
题目:
🌟题解:
就是典型的二维前缀和处理一下查询
代码:
#include<iostream>
using namespace std;
typedef long long ll;
const int N=10010;
ll a[N],b[N],c[N][N],s[N][N];
int main()
{ll n,m,q;cin>>n>>m;for(ll i=1;i<=n;i++)cin>>a[i];for(ll i=1;i<=m;i++)cin>>b[i];for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++)c[i][j]=a[i]*b[j];for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++)s[i][j] = s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1] + c[i][j];cin>>q;while(q--){ll x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;cout<<s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]<<endl;}return 0;
}
⭐️I.最短区间
题目:
🌟题解:
双指针i,j指一指循环区间根据条件找到最小区间
代码:
1.
#include<iostream>
using namespace std;
const int N = 100005;
typedef long long ll;
ll n,x;
ll a[N];
ll mul=1,ma;
int ans=N;
int main()
{cin>>n>>x;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1,j=1;i<=n;i++){while(mul<x && j<=n){mul*=a[j];j++;}if(mul>=x) ans=min(ans,j-i);mul/=a[i];}if(ans>n) ans=-1;cout<<ans<<endl;return 0;
}
2.
#include <iostream>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int main() {int n, x;cin >> n >> x;for (int i = 1; i <= n; ++i)cin >> a[i];int left = 1, right = 1, len = 0;long long prod = a[1];while (right <= n) {if (prod >= x) { if (len == 0 || right - left + 1 < len) len = right - left + 1;prod /= a[left]; left++;if (left > right) { right++;if (right <= n)prod *= a[right];}} else {right++;if (right <= n)prod *= a[right];}}if (len == 0)cout << "-1" << endl;elsecout << len << endl;return 0;
}
⭐️J.点球大战
题目:
🌟题解:
代码:
⭐️K.冠军预言
题目:
🌟题解:
代码:
⭐️L.an interesting problem
题目:
🌟题解:
很复杂的一道题但是思维很简单,代码量很多
代码:
⭐️M.选数异或
题目:
🌟题解:
我们可以用一个桶来记录每个数出现的次数,然后从前往后遍历数列,对于每个数 x,我们可以计算出在它之前出现的比它大的数的个数,就是(i-1-cnt[x]),其中 i 是当前遍历到的位置,cnt[x] 是 x* 出现的次数。这个式子的意思是,在 x 之前,一共有 i−1 个数,其中有 cnt[x] 个数等于 x,所以比 x大的数的个数就是 i−1−cnt[x]。
最后的答案就是所有的逆序对个数之和。时间复杂度 O*(*n)。
代码:
#include<iostream>
using namespace std;
const int N = 1000010;
typedef long long ll;
ll n,cnt[N],x,ans;
int main()
{cin>>n;for(int i=1;i<=n;i++) {cin>>x;ans+=(i-1-cnt[x]);cnt[x]++;}cout<<ans<<endl;return 0;
}
A<B<CG<HD<E<I<M<F<JKL
相关文章:

第五届太原理工大学程序设计竞赛新生赛(初赛)题解
第五届太原理工大学程序设计竞赛新生赛(初赛)题解 时隔半年重做一次,还是有几道不会,,,,, ⭐️A.饿饿饭饭 题目: 🌟题解: 很简单,签…...

微信小程序开发之后台数据交互及wxs应用
目录 一、后端准备 1. 应用配置 2. 数据源配置 二、数据库 1. 创建 2. 数据表 3. 数据测试 三、前端 1. 请求方法整合 2. 数据请求 3. WXS的使用 4. 样式美化 5. 页面 一、后端准备 通过SpringMVC及mybatis的技术学习,还有前后端分离的技术应用&…...
Java进阶篇--并发容器之ThreadLocal内存泄漏
目录 ThreadLocal内存泄漏的原因? 改进和优化 cleanSomeSlots方法 expungeStaleEntry方法 replaceStaleEntry方法 为什么使用弱引用? Thread.exit() ThreadLocal内存泄漏最佳解决方案 在使用完毕后立即清理ThreadLocal 使用InheritableThreadL…...

js实现红包雨功能(canvas,react,ts),包括图片不规则旋转、大小、转速、掉落速度控制、屏幕最大红包数量控制等功能
介绍 本文功能由canvas实现红包雨功能(index.tsx)本文为react的ts版。如有其他版本需求可评论区观赏地址,需过墙 import React, { Component } from react; // import ./index.css; import moneyx from /assets/images/RedEnvelopeRain/bal…...

【数字IC设计/FPGA】FIFO与流控机制
流控,简单来说就是控制数据流停止发送。常见的流控机制分为带内流控和带外流控。 FIFO的流水反压机制 一般来说,每一个fifo都有一个将满阈值afull_value(almost full)。当fifo内的数据量达到或超过afull_value时,将满…...

C++笔记之遍历vector的所有方式
C笔记之遍历vector的所有方式 —— 2023年4月15日 上海 code review 文章目录 C笔记之遍历vector的所有方式1.普通for循环2.迭代器版3.const迭代器4.C11引入的范围for循环5.使用auto关键字和迭代器6.使用std::for_each算法7.使用std::for_each和lambda表达式8.普通版vector::at…...

OpenCV 笔记(2):图像的属性以及像素相关的操作
Part11. 图像的属性 11.1 Mat 的主要属性 在前文中,我们大致了解了 Mat 的基本结构以及它的创建与赋值。接下来我们通过一个例子,来看看 Mat 所包含的常用属性。 先创建一个 3*4 的四通道的矩阵,并打印出其相关的属性,稍后会详细…...

基于指数分布优化的BP神经网络(分类应用) - 附代码
基于指数分布优化的BP神经网络(分类应用) - 附代码 文章目录 基于指数分布优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.指数分布优化BP神经网络3.1 BP神经网络参数设置3.2 指数分布算法应用 4.测试结果…...

Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)
案例:求1~100之间,所有偶数的和 思考: 先套用原有基础模式,之后再思考其他的。 其实就是在之前文章 Python--练习:使用while循环求1..100的和-CSDN博客 的基础上,再判断如果获取到里面的全部偶数&#…...

带温度的softmax
用pytorch写一下使用带有温度的softmax的demo import torch import torch.nn.functional as F# 定义带有温度的softmax函数 def temperature_softmax(logits, temperature1.0):return F.softmax(logits / temperature, dim-1)# 输入logits logits torch.tensor([[1.0, 2.0, 3.…...
js函数调用的方式有几种
在 JavaScript 中,函数可以通过不同的方式进行调用。以下是常见的几种函数调用方式: 函数调用:使用函数名称后跟一对小括号来调用函数,这是最基本的调用方式。 functionName(); 方法调用:函数可以作为对象的方法进行调…...

聊聊设计模式--简单工厂模式
简单工厂模式 前面也学了很多各种微服务架构的组件,包括后续的服务部署、代码管理、Docker等技术,那么作为后端人员,最重要的任务还是代码编写能力,如何让你的代码写的漂亮、易扩展,让别人一看赏心悦目,…...

Python基础教程:内置函数之字典函数的使用方法
嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 len(字典名): 返回键的个数,即字典的长度 # len(字典名): # 返回键的个数,即字典的长度dic {a:123,b:456,c:789…...

Pytorch从零开始实战06
Pytorch从零开始实战——明星识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——明星识别环境准备数据集模型选择开始训练模型可视化模型预测总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytorch2.0.1c…...

RT-Thread学习笔记(三):线程管理
线程管理 线程管理相关概念什么是时间片轮转调度器锁线程运行机制线程的五种状态 动态和静态创建线程区别动态和静态创建线程优缺点RT-Thread动态线程管理函数动态创建线程动态删除线程 RT-Thread静态线程管理函数静态创建线程 线程其他操作线程启动线程延时获得当前执行的线程…...

pymysql连接Mariadb/Mysql出现错误(配置正确情况下)解决办法
场景:在kali中使用python中pymysql对Mariadb进行连接,在整个过程中配置全部正确,但是就是无法进行连接,提示结果如下: Access denied for user rootlocalhost解决办法:进入数据库中,将默认密码…...

数据仓库扫盲系列(1):数据仓库诞生原因、基本特点、和数据库的区别
数据仓库的诞生原因 随着互联网的普及,信息技术已经深入到各行各业,并逐步融入到企业的日常运营中。然而,当前企业在信息化建设过程中遇到了一些困境与挑战。 1、历史数据积存。 过去企业的业务系统往往是在较长时间内建设的,很…...

DataX-web安装部署和使用
DataX-web的环境准备 MySQL (5.5) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在do…...
sqlmap防御以及文件读写
一.防御 过滤 1.使用过滤函数 $email filter_var($_POST[email], FILTER_VALIDATE_EMAIL); if ($email) { // input is a valid email address } else { // input is not a valid email address 使用 filter_var() 函数和 FILTER_VALIDATE_EMAIL 过滤器来验证用户输…...

【源码】C/C++运动会计分系统 期末设计源码
文章目录 题目介绍功能源码效果展示带报告(内容) 题目介绍 使用语言: 两个版本都会发: 版本1:C语言 版本2: C 代码量: 500 题目介绍: 要求:初始化输入:N-参赛…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...