2019年华南理工大学程序设计竞赛(春季赛)题解

2023-11-01 05:32

本文主要是介绍2019年华南理工大学程序设计竞赛(春季赛)题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目在牛客上有https://ac.nowcoder.com/acm/contest/625#question

C    六数学家的困惑

题意:就是给你两串数字,每次只能从其中一串数字的左侧或右侧取出一个数字,然后组成一串最大的字典序最大的串。做法是把两串数字翻转一下,变成四串数字,每次从字典序最大的那串数取数。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 5;int main()
{int n, Case = 0;string a, b, t;cin >> n;while(n--){cin >> a >> b;cout << "Case #" << ++Case << ": ";while(a.length() || b.length()){t = a;reverse(a.begin(), a.end());a = max(a, t);t = b;reverse(b.begin(), b.end());b = max(b, t);if(a < b) swap(a, b);cout << a[0];a.erase(0, 1);}cout << endl;}return 0;
}

 

E    数独挑战

暴力搜索题,每次判断填的数在行列中和小九宫格中是否出现过。

#include <bits/stdc++.h>
using namespace std;
int num[9][9], flag;
int col[10][10], row[10][10];//列 行标记
int nine[3][3][10];
void print(){for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){cout << num[i][j];if(j != 8) cout << " ";}cout << endl;}
}void dfs(int x, int y){if(flag) return ;if(y == 9){flag = 1;print();return ;}if(num[y][x] == 0){for(int i = 1; i <= 9; i++){if(!col[x][i] && !row[y][i] && !nine[y / 3][x / 3][i]){col[x][i] = 1;row[y][i] = 1;nine[y / 3][x / 3][i] = 1;num[y][x] = i;dfs((x + 1) % 9, y + (x + 1) / 9);col[x][i] = 0;row[y][i] = 0;nine[y / 3][x / 3][i] = 0;}}num[y][x] = 0;}else{dfs((x + 1) % 9, y + (x + 1) / 9);}
}int main()
{flag = 0;memset(col, 0, sizeof(col));memset(row, 0, sizeof(row));memset(nine, 0, sizeof(nine));for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){cin >> num[i][j];col[j][num[i][j]] = 1;row[i][num[i][j]] = 1;nine[i / 3][j / 3][num[i][j]] = 1;}}dfs(0, 0);return 0;
}

 

F    翻牌游戏

概率DP。但是可从后面的样例推出规律 2n-1

#include <cstdio>
int main() {int t;double n;scanf("%d", &t);while(t--){scanf("%lf", &n); printf("%.2lf\n", 2*n-1);}return 0;
}

 

H    Parco_Love_GCD

先把n个数的公共gcd求出来。然后对每个子序列的起点往后求gcd,有和公共gcd相同的可用直接计算ans = (ans + (n - 1 - j) * com) % MOD然后跳过这轮循环。数据比较水,到后面有许多相同的数QAQ

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define MOD 1000000007
const int maxn = 5e5 + 5;
LL a[maxn];
LL gcd(LL a, LL b){return b == 0 ? a : gcd(b, a % b);
}
int main() {LL ans = 0, com, res, n;//com公共公约数cin >> n;for(int i = 0; i < n; i++){cin >> a[i];if(i == 0) com = a[i];else com = gcd(a[i], com);}/*16 4 7 21 3
res 16 4 1  1 1*///cout << com << endl;for(int i = 0; i < n; i++){res = a[i];for(int j = i; j < n; j++){res = gcd(res, a[j]);ans = (ans + res) % MOD;if(res == com){//如果这里的公共公约数=com,那后面的公共公约数肯定也是com,直接加起来ans = (ans + (n - 1 - j) * com) % MOD;break;//后面不用计算了}}}cout << ans << endl;return 0;
}

I     炒股

贪心题,每次加上两数差为正数

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 5;int main()
{std::ios::sync_with_stdio(false);LL ans = 0, n, last, a;cin >> n;for(int i = 0; i < n; i++){cin >> a;if(i >= 1 && last < a) ans += a - last;last = a;}cout << ans << endl;return 0;
}

L    石头剪刀布

签到题

#include <bits/stdc++.h>
using namespace std;
int main()
{int n;char a[10];cin >> n;while(n--){cin >> a;if(a[0] == 'S') cout << "Rock" << endl;else if(a[0] == 'R') cout << "Paper" << endl;else cout << "Scissors" << endl;}return 0;
}

 

这篇关于2019年华南理工大学程序设计竞赛(春季赛)题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。