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的更多相关文章

  1. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

  2. 记第一届 CCCC-团体程序设计天梯赛决赛 参赛

    其他都没什么,上午报道,下午比赛两个半小时,最后139分 但四我超遗憾的是,最后在做L3-1二叉搜索树,因为看到有辣么多人做出来,可是我没做出来啊 比赛结束后看了看其他两道当场吐血,L3-3直捣黄龙不 ...

  3. L1-049 天梯赛座位分配​​​​​​​

    L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...

  4. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  6. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  7. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  8. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  9. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  10. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

随机推荐

  1. Win10升Win11后出现的文件系统错误-1073740771的几种可能解决办法

    可能性1 有服务没能启动 键盘按"WIN+R"打开"运行"对话框 在对话框输入"services.msc"点击"确定"按 ...

  2. python重拾基础第三天

    本节内容 函数基本语法及特性 参数与局部变量 返回值 嵌套函数 递归 匿名函数 函数式编程介绍 高阶函数 内置函数 1. 函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况 ...

  3. ajax - 初步介绍

    进入ajax了,想要进入vue还有一个前提就是要把ajax给熟悉一下,看一看客户端与服务器之间是怎么一个通信的过程,第一天主要是先了解了一下ajax的一些介绍,ajax嘛,在进入之前,肯定是要了解一下 ...

  4. Python数据分析代码示例

    数据清洗 在进行数据分析之前,通常需要对原始数据进行清洗,即处理缺失值.异常值.重复值等问题. 下面是一个数据清洗的示例代码: import pandas as pd # 读取原始数据 data = ...

  5. Centos7离线安装gcc4.8

    有时候CentOS工作在无互联网的环境下,需要在离线环境下安装一些组件,这次实现的是模拟在离线环境下安装gcc4.8. 第一步: 先去http://mirrors.aliyun.com/centos/ ...

  6. 记一次Redis实施故障

    服务在测试环境运行没问题,部署到生产环境,连redis时报下面的错误: [2022-11-04 00:00:09][org.springframework.scheduling.support.Tas ...

  7. 使用post请求登陆

    1.使用post请求登陆 import requests import matplotlib.pyplot as plt url = 'https://www.ptpress.com.cn/login ...

  8. 用IO多路复用实现 nginx 静态资源代理(C/Java/Golang)

    用IO多路复用实现 nginx 静态资源代理(C/Java/Golang) 效果展示 代理 HTML 代理图片 注意, 静态资源代理基于 HTTP, 可以了解上一篇文章: 几十行代码使用TCP简单实现 ...

  9. OpenStack 基本命令

    keystone source /etc/keystone/admin-openrc.sh #登录 openstack user create --password ps1234 --email hq ...

  10. 【爬虫】Java爬取省市县行政区域统计数据

    前言 网上看了好几个Python爬虫来爬取省市县行政区域统计 官网除了省市县以外,还有区,街道,居委村委层级 https://zhuanlan.zhihu.com/p/512852193 所以自己用J ...