SMU 2024 spring 天梯赛4
SMU 2024 spring 天梯赛4
7-1 心理阴影面积 - SMU 2024 spring 天梯赛4 (pintia.cn)
由 \(d = \frac{Ax+By+c}{\sqrt {A^2 + B^2}}\) 再乘以 \(100\sqrt 2 \times \frac{1}{2}\)可得\(|x-y| \times 50\);
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int x,y;
cin >> x >> y;
cout << abs(y-x) * 50 << '\n';
return 0;
}
7-2 人与神 - SMU 2024 spring 天梯赛4 (pintia.cn)
To iterate is human, to recurse divine.
7-3 通讯录的录入与显示 - SMU 2024 spring 天梯赛4 (pintia.cn)
要查询的记录编号可能为负数;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
string s;
vector<array<string,5>> mp(n + 1);
for(int i = 0;i < n;i ++){
for(int j = 0;j < 5;j ++)
cin >> mp[i][j];
}
int k;
cin >> k;
while(k--){
int num;
cin >> num;
if(num < n && num >= 0){
cout << mp[num][0] << ' ' << mp[num][3] << ' ' << mp[num][4] << ' ' << mp[num][2] << ' ' << mp[num][1] << '\n';
}else{
cout << "Not Found\n";
}
}
return 0;
}
7-4 算术入门之加减乘除 - SMU 2024 spring 天梯赛4 (pintia.cn)
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a,b;
cin >> a >> b;
printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
if(a % b == 0)
printf("%d / %d = %d\n",a,b,a/b);
else
printf("%d / %d = %.2lf\n",a,b,a * 1.0 / b);
return 0;
}
7-5 出生年 - SMU 2024 spring 天梯赛4 (pintia.cn)
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,x,y;
cin >> y >> n;
for(int i = y;;i ++){
set<int> s;
if(i<1000) s.insert(0);
int j = i;
while(j){
s.insert(j % 10);
j /= 10;
}
if(s.size() == n){
printf("%d %04d\n",i - y, i);
break;
}
}
return 0;
}
7-6 九宫格输入法 - SMU 2024 spring 天梯赛4 (pintia.cn)
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
vector<string> ok{
{"0 "},{"1,.?!"},{"2ABC"},{"3DEF"},{"4GHI"},{"5JKL"},{"6MNO"},{"7PQRS"},{"8TUV"},{"9WXYZ"}
};
string s;
getline(cin,s);
for(int i = 0;i < s.size();i ++){
if(s[i] != ' '){
int j = i;
while(j + 1 < s.size() && s[j + 1] != ' ') j ++;
int num = j - i;
string p = ok[s[i] - '0'];
cout << p[num % (int)p.size()];
i = j + 1;
}
}
return 0;
}
7-7 螺旋方阵 - SMU 2024 spring 天梯赛4 (pintia.cn)
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector ans(n,vector<int>(n));
int cnt = 1;
for(int i = 0;i <= n / 2;i ++){
int j = i, k = i + 1;
while(j < n && !ans[i][j]) ans[i][j ++] = cnt ++;
j --;
while(k < n && !ans[k][j]) ans[k ++][j] = cnt ++;
k --,j --;
while(j >= 0 && !ans[k][j]) ans[k][j--] = cnt ++;
j ++,k --;
while(k >= 0 && !ans[k][j]) ans[k --][j] = cnt ++;
}
for(int i = 0;i < n;i ++){
for(int j = 0;j < n;j ++){
int num = to_string(ans[i][j]).size();
for(int k = 0;k < 3 - num;k ++)
cout << ' ';
cout << ans[i][j];
}
cout << '\n';
}
return 0;
}
7-8 抓老鼠啊~亏了还是赚了? - SMU 2024 spring 天梯赛4 (pintia.cn)

f1为不高兴期,f2为伤心期,g为兴奋期,其余按题意模拟;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
int ans = 0;
int f1 = 0, f2 = 0, g = 0;
for (int i = 0; i < s.size() - 1; i ++) {
if (!g) {
if (f1 || f2) {
if (f1) f1 --;
if (f2) f2 --;
cout << '-';
continue;
}
}
if(f1) f1 --;
if(f2) f2 --;
if(g) g --;
if (s[i] == 'X') {
f1 = 1;
cout << 'U';
} else if (s[i] == 'T') {
f2 = 2;
ans += 7;
cout << 'D';
} else if (s[i] == 'C') {
f1 = f2 = 0;
g = 2;
ans -= 3;
cout << '!';
}
}
cout << '\n' << ans << '\n';
return 0;
}
7-9 Windows消息队列 - SMU 2024 spring 天梯赛4 (pintia.cn)
用优先队列按优先级为关键字模拟;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
using a2 = pair<int,string>;
priority_queue<a2,vector<a2>,greater<a2>> Q;
while(n --){
string s;
cin >> s;
if(s == "PUT"){
string a;
int x;
cin >> a >> x;
Q.push({x,a});
}else{
if(Q.empty()){
cout << "EMPTY QUEUE!\n";
continue;
}
cout << Q.top().second << '\n';
Q.pop();
}
}
return 0;
}
7-10 名人堂与代金券 - SMU 2024 spring 天梯赛4 (pintia.cn)
模拟;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
struct Node {
int x;
string s;
bool operator < (const Node& y) const {
if (x != y.x) return x > y.x;
return s < y.s;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, g, k;
cin >> n >> g >> k;
string s;
vector<Node> res(n);
int ans = 0;
for (int i = 0; i < n; i ++) {
int x;
cin >> s >> x;
res[i] = {x, s};
if (x >= g) ans += 50;
else if (x >= 60) ans += 20;
}
cout << ans << '\n';
sort(res.begin(), res.end());
int cnt = 1, las = 0, now = 0;
while (cnt <= k) {
las = now;
cout << cnt << ' ' << res[now].s << ' ' << res[now].x << '\n';
now ++;
while (now < n && res[now].x == res[now - 1].x) {
cout << cnt << ' ' << res[now].s << ' ' << res[now].x << '\n';
now ++;
}
cnt += now - las;
}
return 0;
}
7-11 用扑克牌计算24点 - SMU 2024 spring 天梯赛4(补题) (pintia.cn)
括号有三种类型,一种是2 3 12 12,((3-2)*12)+12,一种是2 13 7 7, 2*(13-(7/7)),还有一种是5 5 5 5,(5*5)-(5/5),注意判断的时候即可,其余可以直接用全排列然后去枚举四种符号即可;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
double a[4] = {};
for (int i = 0; i < 4; i ++)
cin >> a[i];
auto cal = [](double x, double y, char c) -> double {
if (c == '+') return x + y;
if (c == '-') return x - y;
if (c == '*') return x * y;
return x / y;
};
sort(a, a + 4);
char c[] = {'+', '-', '*', '/'};
do {
for (int i = 0; i < 4; i ++) {
for (int j = 0; j < 4; j ++) {
for (int k = 0; k < 4; k ++) {
if (cal(cal(cal(a[0], a[1], c[i]), a[2], c[j]), a[3], c[k]) == 24) {
cout << "((" << a[0] << c[i] << a[1] << ')' << c[j] << a[2] << ')' << c[k] << a[3];
return 0;
} else if (cal(cal(a[0], a[1], c[i]), cal(a[2], a[3], c[j]) , c[k]) == 24) {
cout << "(" << a[0] << c[i] << a[1] << ")" << c[k] << "(" << a[2] << c[j] << a[3] << ")";
return 0;
} else if (cal(a[0], cal(a[1], cal(a[2], a[3], c[k]), c[j]), c[i]) == 24) {
cout << a[0] << c[i] << "(" << a[1] << c[j] << "(" << a[2] << c[k] << a[3] << "))" ;
return 0;
}
}
}
}
} while (next_permutation(a, a + 4));
cout << "-1\n";
return 0;
}
7-12 玩转二叉树 - SMU 2024 spring 天梯赛4(补题) (pintia.cn)
注意节点没有说是\(1\sim n\)啊QAQ
写得时候一直段错误,后来改成存下标就过了,如果不理解这题的可以先去看看已知前序和中序怎么求后序,在递归的时候其实就是按左右儿子去递归,所以我们存的时候可以先存右儿子再存左儿子,这样就可以保证遍历的时候是反转的;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> pre(n + 1), mid(n + 1);
vector g(n + 1, vector<int>());
for (int i = 1; i <= n; i ++) cin >> mid[i];
for (int i = 1; i <= n; i ++) cin >> pre[i];
auto dfs = [&](auto dfs, int root, int start, int end) -> void{
if (start > end)
return ;
int i = start;
while (i < end && mid[i] != pre[root])
i++;
int l = root + 1, r = root + 1 - start + i;
if (r <= n && r > 0)
g[root].push_back(r);
if (l > 0 && l <= n)
g[root].push_back(l);
dfs(dfs, r, i + 1, end);
dfs(dfs, l, start, i - 1);
};
dfs(dfs, 1, 1, n);
queue<int> Q;
Q.push(1);
vector<bool> vis(n + 1);
vector<int> ans;
while (Q.size()) {
int u = Q.front();
Q.pop();
if (vis[u]) continue;
vis[u] = true;
ans.push_back(pre[u]);
for (auto v : g[u]) {
Q.push(v);
}
}
for (auto i : ans)
cout << i << " \n"[i == ans.back()];
return 0;
}
7-13 六度空间 - SMU 2024 spring 天梯赛4(补题) (pintia.cn)
bfs的进阶一点小技巧(,就是记录每层的最后一个节点last,然后当该次bfs遍历到了这一层的最后一个节点,那么久层数level++,大于6的时候退出即可;
dfs的话大多数题解也讲了,就是会丢掉某些最优解导致不能AC;
#include <bits/stdc++.h>
using namespace std;
using i64 = long long ;
int main() {
int n, m;
cin >> n >> m;
vector g(n + 1, vector<int>());
vector<bool> vis(n + 1);
for (int i = 0; i < m; i ++) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
auto bfs = [&](int x) {
vector<bool>(n + 1).swap(vis);
int level = 0, last = x, now = 0, ans = 1;
queue<int> Q;
Q.push(x);
vis[x] = 1;
while (Q.size()) {
auto u = Q.front();
Q.pop();
for (auto v : g[u]) {
if (!vis[v]) {
ans ++;
Q.push(v);
now = v;
vis[v] = 1;
}
}
if (u == last) {
level ++;
last = now;
}
if (level >= 6) {
break;
}
}
return ans;
};
for (int i = 1; i <= n; i ++) {
int ans = bfs(i);
printf("%d: %.2lf%%\n", i, ans * 100.0 / n);
}
return 0;
}
SMU 2024 spring 天梯赛4的更多相关文章
- 【CCCC天梯赛决赛】
cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...
- 记第一届 CCCC-团体程序设计天梯赛决赛 参赛
其他都没什么,上午报道,下午比赛两个半小时,最后139分 但四我超遗憾的是,最后在做L3-1二叉搜索树,因为看到有辣么多人做出来,可是我没做出来啊 比赛结束后看了看其他两道当场吐血,L3-3直捣黄龙不 ...
- L1-049 天梯赛座位分配
L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 第四届CCCC团体程序设计天梯赛 后记
一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
随机推荐
- Linux 增加 swap 分区
检查当前swap分区 [root@localhost ~]# free -g total used free shared buffers cached Mem: 15 0 14 0 0 0 -/+ ...
- yolov1-yolov5 网络结构&正负样本筛选&损失计算
学习yolo系列,最重要的,最核心的就是网络模型.正负样本匹配.损失函数等三个方面.本篇汇总了yolov1-yolov5等5个版本的相关知识点,主要看点是在yolo框架搭建.初学者可以通过相关篇章搭建 ...
- 【Vyos-开源篇-1】- VMware 安装 VyOS 虚拟机
文章说明:使用VMware ESXi和VMware Workstation安装vyos软路由. 一.项目准备 1.1.VMware ESXi 我家里的是一台8核心,20G内存,2T的N5105工控机, ...
- 海思SDK 学习 :001-HI_SDK 的 安装
背景 保密.不管怎么样接触到了海思SDK的开发,作为一项比较常见的技术,我们开展有关地学习. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 概况 ...
- 可重入锁思想,设计MQ迁移方案
如果你的MQ消息要从Kafka切换到RocketMQ且不停机,怎么做?在让这个MQ消息调用第三方发奖接口,但无幂等字段又怎么处理?今天小傅哥就给大家分享一个关于MQ消息在这样的场景中的处理手段. 这是 ...
- javaApi,mapreduce,awk,scala四种方式实现词频统计
awk方式实现词频统计: 方式一: vi wordcount.awk { for (i = 1; i <=NF;i++) //NF 表示的是浏览记录的域的个数 freq[$i]++ } END{ ...
- Webpack5
Webpack是一款模块打包工具,可以把多个文件打包成一个或几个文件,它不仅能打包JS文件, 还能打包css, image等静态资源.当然,在默认情况下,它只打包JS文件和JSON文件,因为它只认识J ...
- 时间序列分析专题——利用SPSS专家建模器进行建模
SPSS的专家建模器可以自动识别数据,给出最适合的模型,本章通过三个例题介绍如何使用SPSS实现时间序列分析.由于本人对时间序列分析的理解尚浅,做出模型后在论文上的呈现形式需要取查阅资料,以便更好地在 ...
- JavaSE进阶核心之class类
Java顶级对象之Object 什么是Object类 Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入 Object类是所有java类的 ...
- JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可. 拿<深入Java虚拟机>书中的3-7代码例子来演示,如 1 public ...