2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛
2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛
2024.8.2 12:00————16:00
过题数790/1500
补题数943.33/1500
- A+B Problem
- Komorebi的数学课
- 次佛锅
- Setsuna的K数列
- Wiki下象棋
- 黄金律法
- 天气预报
- 叠硬币
- A+B Problem again
- 史东薇尔城
- 取模
- 剪绳子
- 数硬币
- 截肢葛瑞克
- 上海施工小学
A - A+B Problem
题解:
给出一个长度为n的数组,对于数组中的每一个数字a,再数组中的其他数字中找到一个b使得a+b最大。输出n个数字。
找出数组最大值并判断有几个,有多个的话输出所有的数字加上最大值的结果即可,只有一个的话,最大的数字要加上第二大的数字,别的加上最大的数字即可。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
int a[100005];
int an[100005];signed main() {int n;cin >> n;int ma = 0;int ma2 = 0;for (int i = 1; i <= n; i++) {cin >> a[i];if(a[i] > ma)ma = a[i];}int t = 0;int wz;for (int i = 1; i <= n; i++) {if(ma == a[i]){wz = i;t++;continue;}an[i] = a[i]+ma;if(an[i] > ma2)ma2 = an[i];}if(t == 1) {for (int i = 1; i <= n; i++) {if(i == wz)an[i] = ma2;cout << an[i] << ' ';}}else {for (int i = 1; i <= n; i++) {if(a[i] == ma)an[i] = a[i]+ma;cout << an[i] << ' ';}}return 0;
}
B - Komorebi的数学课
题解:
输出n的n次方mod(n+2)
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
int n;int qpow(int base,int power,int mod) {int res = 1;while(power) {if(power & 1)res= res*base%mod;base= base*base%mod;power >>=1;}return res;
}signed main() {cin >> n;cout << qpow(n,n,n+2);return 0;
}
C - 次佛锅
题解:
第一行给出一串字符串,表示这个食材有多少个,相同食材可能多次出现。
用map存取查找即可。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
string s;
int t;
map<string,int>mp;signed main() {getline(cin,s);string p = " ";int lt = 0;for (int i = 0; i < s.length(); i++) {while(('a' <= s[i] && s[i] <= 'z') || 'A' <= s[i] && s[i] <= 'Z') {p = p+s[i];i++;}while('0' <= s[i] && s[i] <= '9') {lt = lt*10 + s[i]-'0';i++;}if(s[i] == ' ') {if('0' <= s[i-1] && s[i-1] <= '9') {mp[p] += lt;p = ' ';lt = 0;}}}mp[p] += lt;cin >> t;while(t--) {string q;cin >> q;q = ' '+q;cout << mp[q] << endl;}return 0;
}
D - Setsuna的K数列
最近好像总是遇到类似题,不知道是不是我的错觉,就是这种用位运算代替直接运算的,会方便很多,但敏感度不够,更多的是看感觉。
题解:
给定俩个整数n和k,创建一个集合A,包含k的所有整数次幂,去A中任意个元素相加,并放进一个新的集合B,将B中的元素从小到大排序输出第n项。
可以考虑到其实就是从第1个数字到第n个数字,每个位上的1分别代表加上了k的i次方,且就是一个递增的序列,所以直接快速幂输出即可。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
string s;
int t;
map<string,int>mp;signed main() {getline(cin,s);string p = " ";int lt = 0;for (int i = 0; i < s.length(); i++) {while(('a' <= s[i] && s[i] <= 'z') || 'A' <= s[i] && s[i] <= 'Z') {p = p+s[i];i++;}while('0' <= s[i] && s[i] <= '9') {lt = lt*10 + s[i]-'0';i++;}if(s[i] == ' ') {if('0' <= s[i-1] && s[i-1] <= '9') {mp[p] += lt;p = ' ';lt = 0;}}}mp[p] += lt;cin >> t;while(t--) {string q;cin >> q;q = ' '+q;cout << mp[q] << endl;}return 0;
}
E - Wiki下象棋
当时写了dfs,怎么都想不起来bfs怎么写,最后果然是没有写出来。dfs一直tle,优化也没用。
题解:
t组数据,每组给出棋盘的行列数和每个棋子的个数,坐标,起点和终点。
bfs跑俩遍就可以,对于马脚特判一下。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
const int N = 310;
int dx[] = {-2,-2,-1,1,2,2,1,-1};
int dy[] = {-1,1,2,2,1,-1,-2,-2};
int t;
bool st[N][N];
int vis[N][N];
int n,m,k,a,b,c,d;
int ans = 1e9;
int ans1 = 1e9;
typedef pair<int,int> PII;void bfs(int x,int y) {queue<PII>q;memset(vis,-1,sizeof vis);vis[x][y] = 0;q.push({x,y});while(!q.empty()) {x=q.front().first;y=q.front().second;for (int i = 0; i < 8; i++) {int ax = x+dx[i],ay = y+dy[i];if(ax < 1 || ax > n || ay < 1 || ay > m)continue;if(st[ax][ay])continue;if(vis[ax][ay] == -1) {vis[ax][ay] = vis[x][y]+1;q.push({ax,ay});}}q.pop();}cout << vis[c][d] << ' ';return ;
}void bfs1(int x,int y) {queue<PII>q;memset(vis,-1,sizeof vis);vis[x][y] = 0;q.push({x,y});while(!q.empty()) {x = q.front().first;y = q.front().second;for (int i = 0; i < 8; i++) {int ax = x+dx[i],ay = y+dy[i];if(ax < 1 || ax > n || ay < 1 || ay > m)continue;if(dx[i] == -2 && st[x-1][y])continue;if(dx[i] == 2 && st[x+1][y])continue;if(dy[i] == 2 && st[x][y+1])continue;if(dy[i] == -2 && st[x][y-1])continue;if(st[ax][ay])continue;if(vis[ax][ay] == -1) {vis[ax][ay] = vis[x][y]+1;q.push({ax,ay});}}q.pop();}cout << vis[c][d] << endl;return ;
}signed main() {cin >> t;while(t--) {memset(st,0,sizeof st);cin >> n >> m >> k >> a >> b >> c >> d;while(k--) {int la,lb;cin >> la >> lb;st[la][lb] = true;}ans = 5000;memset(vis,0,sizeof vis);bfs(a,b);ans1 = 5000;memset(vis,0,sizeof vis);bfs1(a,b);}
}
F - 黄金律法
很奇怪的一道题,当时看过的人多直接试了一下,结果竟然过了。好像是不等式的知识?
题解:
有n个武器的属性值和n个魔法的属性值,现在要求单个属性对应单个魔法相乘求和的最小值。
一个递增一个递减相乘求和即可。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
const int N = 1e6+10;
int t;
int w[N],m[N];signed main() {cin >> t;while(t--) {int n;cin >> n;for (int i = 1; i <= n; i++)cin >> w[i];sort(w+1,w+1+n);for (int i = 1; i <= n; i++)cin >> m[i];sort(m+1,m+1+n,greater<int>());int ans = 0;for (int i = 1; i <= n; i++) {ans += (w[i]*m[i]);}cout << ans << endl;}return 0;
}
G - 天气预报
题解:
未来n天的天气用一个字符串来表示,0表示晴朗,1表示会下青蛙。现在要求找出区间,可以一天都不选,使得他在这段时间内至少可以出去玩a天,休息b天。
对于这段区间的左节点循环遍历,右节点二分判断找到最接近的满足条件的日子,后面的所有日子都满足,直接相加就可以,很简单的二分。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
#define ll long long
const int N = 1e6+10;
int n,a,b;
int aa[N],bb[N];
//晴朗 休息int check(int i,int j) {ll p = aa[j] - aa[i-1];ll q = bb[j] - bb[i-1];if(p >= a && q >= b)return 1;return 0;
}signed main() {cin >> n >> a >> b;string s;cin >> s;s = ' '+s;for (int i = 1; i <= n; i++) {if(s[i] == '0') {aa[i] = aa[i-1]+1;bb[i] = bb[i-1];}else {bb[i] = bb[i-1]+1;aa[i] = aa[i-1];}}int ans = 0;
// int m = 0;
// for (int i = 1; i <= n; i++) {
// if(aa[i]-aa[m] >= a && bb[i]-bb[m] >= b){
// ans += (n-i+1);
// m++;
// }
// }
// for (int i = m; i <= n; i++) {
// if(aa[n]-aa[i] >= a && bb[n]-bb[i] >= b) {
// ans++;
// }
// else break;
// }if(a==0&&b==0)ans++;//特殊情况:当a和b均为0时,可以一天也不选for(int i=1;i<=n;i++){ll l=i,r=n;while(l<r){ll mid=(l+r)/2;if(check(i,mid))r=mid;else l=mid+1;}if(check(i,l))ans+=(n-l+1);}cout << ans << endl;return 0;
}
J - 史东薇尔城
题解:
有n个节点和m条边,询问t次,每次si,ti。需要从si跑回1再跑到ti,球最短路径。
也就是从1跑到si再跑到ti。跑一遍Dijkstra然后输出最短距离即可。
代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6+10;
int n,m;
int dis[N],vis[N];
const int INF = 0x3f3f3f3f;
typedef pair<int,int>PII;
#define endl "\n"struct ty {int to,next,w;
}edge[N+1000];int cnt = 0;
int head[N];
void add_edge(int u,int v,int w) {cnt++;edge[cnt].to = v;edge[cnt].w = w;edge[cnt].next = head[u];head[u] = cnt;
}void dij(int x) {priority_queue<PII,vector<PII>,greater<PII>>pq;pq.push({0,x});dis[x] = 0;while(!pq.empty()) {int x = pq.top().second;pq.pop();//一开始一直写在continue以后跑死循环了if(vis[x])continue;vis[x] = 1;for (int i = head[x]; i!=-1; i = edge[i].next) {if(!vis[edge[i].to]) {if(dis[edge[i].to] > dis[x] + edge[i].w) {dis[edge[i].to] = dis[x] + edge[i].w;pq.push({dis[edge[i].to],edge[i].to});}}}}
}signed main( ){scanf("%lld %lld",&n,&m);memset(head,-1,sizeof head);int a,b,c;for (int i = 1; i <= m; i++) {scanf("%lld %lld %lld",&a,&b,&c);add_edge(a,b,c);add_edge(b,a,c);}int t;scanf("%lld",&t);memset(dis,INF,sizeof dis);memset(vis,0,sizeof vis);dij(1);//别再里面跑!浪费时间!int si,ti;while(t--) {cin >> si >> ti;printf("%lld\n",dis[si]+dis[ti]);}return 0;
}
L - 剪绳子
题解:
十米的绳子,C表示在这个位置减一刀,A表示在这个位置询问这条绳子的长度。
怀疑是数据太水了,暴力跑了一遍就过了。
官方给出的题解是一开始把所有点当成一个绳子,然后把每一截绳子练成一个并查集,倒着往前遍历,C表示连上这俩个并查集,A表示查询。储存输出。
代码:
#include<bits/stdc++.h>using namespace std;
#define int long long
set<double>p;signed main() {int q;cin >> q;while(q--) {char s;cin >> s;double m;cin >> m;if( s== 'A') {double gg = 0;double now = 10;for (auto x: p) {if(x > m){now = x;break;}else gg = x;}double res = now-gg;printf("%0.5lf\n",res);}else {p.insert(m);}}return 0;
}
相关文章:
2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛
2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 2024.8.2 12:00————16:00 过题数790/1500 补题数943.33/1500 AB Problem Komorebi的数学课 次佛锅 Setsuna的K数列 Wiki下象棋 黄金律法 天气预报 叠硬币 AB Problem ag…...
多语言海外AEON抢单可连单加额外单源码,java版多语言抢单系统
多语言海外AEON抢单可连单加额外单源码,java版多语言抢单系统。此套是全新开发的java版多语言抢单系统。 后端java,用的若依框架,这套代码前后端是编译后的,测试可以正常使用,语言繁体,英文,日…...
文件上传——springboot大文件分片多线程上传功能,前端显示弹出上传进度框
一、项目搭建 创建 Spring Boot 项目: 创建一个新的 Spring Boot 项目,添加 Web 依赖。 添加依赖: 在 pom.xml 文件中添加以下依赖: <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId&…...
每日学术速递8.2
1.A Scalable Quantum Non-local Neural Network for Image Classification 标题: 用于图像分类的可扩展量子非局部神经网络 作者: Sparsh Gupta, Debanjan Konar, Vaneet Aggarwal 文章链接:https://arxiv.org/abs/2407.18906 摘要&#x…...
SAP-PLM创建物料主数据接口
FUNCTION zplm_d_0001_mm01. *"---------------------------------------------------------------------- *"*"本地接口: *" EXPORTING *" VALUE(EX_TOTAL) TYPE CHAR4 *" VALUE(EX_SUCCESSFUL) TYPE CHAR4 *" …...
超声波眼镜清洗机哪个品牌好?四款高性能超声波清洗机测评剖析
对于追求高生活质量的用户来说,眼镜的清洁绝对不能马虎。如果不定期清洁眼镜,时间久了,镜片的缝隙中会积累大量的灰尘和细菌,眼镜靠近眼部,对眼部健康有很大影响。在这种情况下,超声波清洗机显得尤为重要。…...
卸载Windows软件的正确姿势,你做对了吗?
前言 今天有小伙伴突然问我:她把软件都卸载了,但是怎么软件都还在运行? 这个问题估计很多小伙伴都是遇到过的,对于电脑小白来说,卸载Windows软件真的真的真的是一件很难的事情。所以,今天咱们就来讲讲&am…...
WEB前端14-Element UI(学生查询表案例/模糊查询/分页查询)
Vue2-Element UI 1.可重用组件的开发 可重用组件 我们一般将可重复使用的组件放在components目录之下,以便父组件的灵活调用 <!--可重用组件一般与css密切相关,使用可重用组件的目的是,将相似的组件放在一起,方便使用-->…...
使用swiftui自定义圆形进度条实现loading
实现的代码如下: // // LoadingView.swift // SwiftBook // // Created by Song on 2024/8/2. //import SwiftUIstruct LoadingView: View {State var process 0.5var body: some View {VStack(spacing: 20) {ZStack {Circle().stroke(.gray.opacity(0.3), lin…...
C# 设计模式之抽象工厂模式
总目录 前言 工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。但是在现实生活中,…...
Javascript前端面试基础(八)
window.onload和$(document).ready区别 window.onload()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕 window.onload 触发时机:window.onload 事件会在整个页面…...
R 语言学习教程,从入门到精通,R的安装与环境的配置(2)
1、R的安装与环境的配置 R语言是一款完全免费且开源的软件,它的开源许可证是GNU通用公共许可证(GPL),这意味着任何人都可以自由地使用、复制、修改和发布R语言的源代码,甚至可以将其用于商业用途。 和python等其他语言…...
Python批量下载音乐功能
Python批量下载音乐功能 Python批量下载音乐,调用API接口,同时下载歌曲和歌词 先安排一下要用的模块,导入进来。 import re import json import requests目录结构 下载音乐 Awking_Class.pymusic.txt 文件文件写的是音乐名字,使用换行分割 new_music 注意这个 ne…...
用 Bytebase 实现批量、多环境、多租户数据库的丝滑变更
Bytebase 提供了多种功能来简化批量变更管理,适用于多环境或多租户情况。本教程将指导您如何使用 部署配置 和 数据库组 在不同场景下进行数据库批量变更。 默认流水线 vs 部署配置 图片数据库 vs 数据库组 1. 准备 请确保已安装 Docker,如果本地没有重…...
java之方法引用 —— ::
目录 一、简介 二、引用静态方法 1.格式 2.示例 编辑 3.条件解析 三、引用成员方法 1.格式 2.示例 四、引用构造方法 1.格式 2.示例 五、类名引用成员方法 1.格式 2.略微不同的方法引用规则 3.示例 六、引用数组的构造方法 1.格式 2.示例 一、简介 方…...
「测试线排查的一些经验-上篇」 后端工程师
文章目录 端口占用脚本失灵线上部署项目结构模版配置文件生效 一般产品研发过程所使用的环境可分为: 研发环境-dev测试环境-test生产环境-prod 软件开发中,完整测试环境包括:UT、IT、ST、UAT UT Unit Test 单元测试 IT System Integration …...
AOSP12_BatteryStats统计电池数据信息
前言 BatteryStats模块主要用于设备在电池供电是系统对各个模块电量使用的统计,Android提供的Battery Historain工具就是对此模块统计的数据进行解析和展示。 一 BatteryStats模块类图 模块主要类图如下:见根目录的模块类图 BatteryStats:抽象类,本模块的核心类,主要定…...
【Android Studio】UI 布局
文章目录 view布局LinearLayout view 在Android开发中,View是一个非常重要的概念,它是所有用户界面组件的基类。View类及其子类构成了Android应用中的用户界面。每个View都占用屏幕上的一个矩形区域,并可以响应用户输入(如触摸、按…...
虚拟机Windows server忘记密码解决方法
原理 utilman.exe是Windows辅助工具管理器程序,虽然它本身不是一个关键的系统进程,但通过修改这个文件,用户可以访问一些有用的UI设置。在某些情况下,比如忘记密码需要重置时,通过修改utilman.exe文件为c…...
【香橙派系列教程】(六)嵌入式SQLite数据库
【六】嵌入式SQLite数据库 文章目录 【六】嵌入式SQLite数据库1.简介2.SQLite数据库安装3.SQLite命令用法1.创建数据库2.创建和查看表格3.插入查看数据(记录)4.删除更改数据(记录) 4.SQLite编程操作1.打开/创建数据库的C接口2.创建…...
深入探讨PHP8的新特性与性能优化
本文由 ChatMoney团队出品 随着互联网技术的飞速发展,PHP作为后端开发领域的热门语言也在不断演进。近期,PHP8的发布引起了广泛关注。本文将为您详细介绍PHP8的新特性以及性能优化,并通过具体示例帮助您更好地理解和应用这些新特性。 一、PH…...
2024年06月 Scratch 图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共10题,共30分) 第1题 运行下列程序,输入单词“PLAY”,最后角色说?( ) A:LY4AP B:AP4LY C:YA4PL D:PL4AY 答案:B 根据程序分析可知,首先获取单词字符数,然后奇数位的字母放在字符数左侧,偶数位…...
书生大模型全链路开源体系
书生大模型全链路开源体系 数据 预训练 微调 评测 部署 应用...
极简聊天室-websocket版(双向通信)
我们知道WebSocket是可以双向通信的,把极简聊天室代码又改了一下,前端发信息到后端也使用websocket,其实代码量更少了。。。 const express require(express); const app express(); var wsServer require(express-ws)(app)var msgs[];ap…...
从小白到架构师 | 缓存预热
缓存预热指的是在系统启动或上线前,提前将经常访问的数据加载到缓存中,以避免在系统刚启动时,用户大量请求直接访问数据库,导致数据库压力过大或系统性能下降。通过缓存预热,可以确保系统一上线就能提供快速的响应时间…...
Modbus -- TCP协议
MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种,它允许Modbus协议在以太网网络上运行,使得设备之间可以通过IP网络交换数据。 一:协议概述 modbus_TCP协议:走的是网口,所以需要创建TCPclient对象进行通信,和modubus-RTU协议最大的区别是&a…...
python四舍五入取整数
在Python中,如果你想要对一个浮点数进行四舍五入并取整(即只保留整数部分),你可以使用内置的round()函数,但不指定第二个参数(即小数位数),或者明确指定为0。这样,Python…...
洛谷 P1868 饥饿的奶牛
原题 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字。 现用汉语翻译为: 有 N 个区间,每个区间x,y 表示提供的x∼y 共y−x1 堆优质牧草。你可以选择任意区间但不…...
Arco Design 之Table表格
此篇文章为table表格示例,包含列、data数据、展开、选中、自定义等相关属性 基础表格 <a-table :columns"columns1" :data"tableData1" />const columns1 [{ title: "编号", dataIndex: "no"},{ title: "名称…...
Python机器学习 模型
Python机器学习模型、回归预测模型、数据清洗、数据处理、数据挖掘、数据分析代做。 模型不仅限于线性回归、逻辑回归、决策树、SVM、随机森林、贝叶斯、XGBoost、LightGBM、CatBoost,聚类:K-Means、DBSCAN,机器学习都可。 时间序列分析&…...
文化建设基金管理有限公司网站/北京seo排名公司
41、42知识点1:委托构造函数:一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程。 class OH{ OH(string s, int a, int b):book(s),price(a),sale(b){} //三参数构造函数的参数列表和函数体首先被执行 OH():OH("",0,0);//默认构造函数又委托给了…...
网站点击率/今天刚刚发生的重大新闻
Balance-Tree & BalanceTree 为什么索引这么快,一个好的索引能将检索速度提升几个量级,这种效率离不开这个数据结构1.1 门路清为什么需要"索引" ? 我们总得依据什么才能去找你想查的东西,那么我们就依据 id1去寻找一条记录&am…...
宁波最靠谱的网站建设/seo关键词优化经验技巧
本文发布于我的个人网站:https://wintc.top/article/58,转载请注明。 多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,于是就写了一个Vu…...
地勘网站建设方案/熊猫关键词工具
罗德与施瓦茨 (Rohde & Schwarz, R&S) 公司成立于1933年,总部位于德国慕尼黑,是一家技术公司,为企业和政府机构开发、生产和销售广泛的电子产品,业务核心在于提供各类解决方案以打造一个更加安全的互联世界。 罗德与施瓦…...
怎么做网站编辑/成都seo培训
6.5.1. 关于LDAP身份验证 Lightweight Directory Access Protocol (LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。 LDAP服务可视为一种特殊的数据库服务,就像文件系统的目录…...
35公司做的网站漏洞/如何做好关键词的优化
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。 1、基本类型及其封装器类 Java基本类型共有…...