2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) A — E

本文主要是介绍2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) A — E,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)

文章目录

        • A -- A Xor B Problem
          • 题目分析
          • code
        • B -- 吃苹果
          • 题目分析
          • code
        • C -- n皇后问题
          • 题目分析
          • code
        • D -- 分苹果
          • 题目分析
          • code
        • E -- 完型填空
          • 题目分析
          • code

A – A Xor B Problem
题目分析

只有相同数字异或结果才为零,统计一下相同数字出现的次数,排列组合即可。

根据样例来看,自身与自身是可以成为一对数字的。

code
#include<bits/stdc++.h>
#define int long longusing namespace std;const int N = 1010;int n, m, k, t;
int a[N];
map<int, int>q;signed main()
{cin >> n;for(int i = 1; i <= n; i ++){cin >> a[i];q[a[i]] ++;}int ans = 0;for(auto &[k, v] : q){if(v >= 2) ans += v * v;else ans ++;}cout << ans << "\n";;return 0;
}
B – 吃苹果
题目分析

可以通过按照早上和晚上吃苹果愉悦值得差值来排序,差值越大得越优先被处理贡献值越大。

code
#include<bits/stdc++.h>
#define int long longusing namespace std;const int N = 1e5 + 10;int n, m, k, t;
bool st[N];struct node
{int l, r;
}q[N];bool cmp(node a, node b)
{return abs(a.l - a.r) > abs(b.l - b.r);
}signed main()
{cin >> n >> k;for(int i = 1; i <= n; i ++){int u, v;cin >> u >> v;q[i] = {u, v};}sort(q + 1, q + n + 1, cmp);int ans = 0;int r1 = n - k, r2 = k;for(int i = 1; i <= n; i ++){if(q[i].l > q[i].r){if(r1){ans += q[i].l;r1 --;}else ans += q[i].r, r2 --;}else{if(r2){ans += q[i].r;r2 --;}else ans += q[i].l, r1 --;}}cout << ans << "\n";return 0;
}
C – n皇后问题
题目分析

每输入一个点判断其八个方向上是否已经被放过即可,不过判断时暴力手法得判断会超时,我们可以通过判断是否在一条直线上的方式来判断会不会冲突。

横向和纵向的比较简单,问题是处理两个对角线。两个对角线为y=x+ay=-x+b,可以通过xy来看常数是否相同从而判断是否在一条直线上。

code
#include<bits/stdc++.h>
using namespace std;const int N = 1e7 + 10;int n, m, k, t;bool row[N], col[N], dg[N], udg[N];bool get(int x, int y)
{if(!row[x] && !col[y] && !dg[x + y] && !udg[n - x  + y]){row[x] = col[y] = dg[x + y] = udg[n - x + y] = true;return true;}return false;
}signed main()
{scanf("%d%d", &n, &t);while(t --){int x, y;scanf("%d%d", &x, &y);if (get(x, y)) puts("Yes");else puts("No");}return 0;
}
D – 分苹果
题目分析

可以看作两个木棒把一个桌面分成了四个部分,带入点坐标根据数值得结果可以判断在哪个部分。
在这里插入图片描述

code
#include <bits/stdc++.h>
#define int long longusing namespace std;int a[5];
int n, m, k, t;
int Ae, Be, Ce;
int Ar, Br, Cr;signed main()
{cin >> n;cin >> Ae >> Be >> Ce;cin >> Ar >> Br >> Cr;for(int i = 1; i <= n; i ++){int x, y;cin >> x >> y;int ans1 = Ae * x + Be * y + Ce;int ans2 = Ar * x + Br * y + Cr;if(ans1 > 0 && ans2 > 0) a[1]++;else if(ans1 > 0 && ans2 < 0) a[2]++;else if(ans1 < 0 && ans2 > 0) a[3] ++;else if(ans1 < 0 && ans2 < 0) a[4] ++;}sort(a + 1, a + 5);for(int i = 1; i <= 4; i ++) cout << a[i] << " " ;
}
E – 完型填空
题目分析

本体数据范围较小并且分成的情况很多,可以采用动态规划的方法。

集合f[i][j][k][r]表示:A选项选了i个,B选项选了j个,C选项选了k个,D选项选了f个,所得期望的值的集合

根据思考前一个得方法,可以很容易得到状态转移方程。

code
#include<bits/stdc++.h>
#define int long longusing namespace std;const int N = 110;int n, m, k, t;
int a[N], w[N][5];
int f[N][N][N][N];signed main()
{cin >> n;for(int i = 1; i <= n; i ++)for(int j = 1; j <= 4; j ++)cin >> w[i][j];n /= 4;for(int i = 0; i <= n; i ++)for(int j = 0; j <= n; j ++)for(int k = 0; k <= n; k ++)for(int r = 0; r <= n; r ++){if(i > 0)f[i][j][k][r] = max(f[i][j][k][r], f[i - 1][j][k][r] + w[i + j + k + r][1]);if(j > 0)f[i][j][k][r] = max(f[i][j][k][r], f[i][j - 1][k][r] + w[i + j + k + r][2]);if(k > 0)f[i][j][k][r] = max(f[i][j][k][r], f[i][j][k - 1][r] + w[i + j + k + r][3]);if(r > 0)f[i][j][k][r] = max(f[i][j][k][r], f[i][j][k][r - 1] + w[i + j + k + r][4]);}cout << f[n][n][n][n] << "\n";return 0;
}

这篇关于2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) A — E的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158894

相关文章

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2