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 ...
随机推荐
- windows 安装mysql 非常之详细
安装 1.下载安装包 2.解压包 3.文件夹内创建my.ini配置文件,并添加内容 # For advice on how to change settings please see # http: ...
- c++引用(REFERENCES)
一个例子 void add(int value) { value++; } int main() { int a = 5; LOG(a); add(a); LOG( a); } 在这种情况下,变量a在 ...
- 详解Web应用安全系列(3)失效的身份认证
大多数身份和访问管理系统的设计和实现,普遍存在身份认证失效的问题.会话管理是身份验证和访问控制的基础,并且存在于所有有状态的应用程序中.攻击者可以使用指南手册来检测失效的身份认证,但通常会关注密码转储 ...
- socket 端口复用 SO_REUSEPORT 与 SO_REUSEADDR
背景 在学习 SO_REUSEADDR 地址复用的时候,看到有人提到了 SO_REUSEPORT .于是也了解了一下. SO_REUSEPORT 概述 SO_REUSEPOR这个socket选项可以让 ...
- Qt 之 emit、signals、slot的使用
背景 ref : https://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/index.html 信号和槽机制是 QT ...
- 基于防火墙的SSLVPN
SCVPN即SSLVPN 拓补图 记得打开策略! 设置外接口(一些管理方式要打开) 设置SSL 地址池(如没要求设iP,随意设) 建立SSL VPN 出接口,地址池要选对 创建一个本地用户(账号A 密 ...
- Vue 是如何实现数据双向绑定的?
Vue 数据双向绑定主要是指: 数据变化更新视图 视图变化更新数据. 即: 输入框内容变化时,Data 中的数据同步变化.即 View => Data 的变化. Data 中的数据变化时,文本节 ...
- JS --函数进阶 --手稿
- SpringBoot 接收Post请求参数,三种方式
package net.cyb.demo.controller; import net.cyb.demo.domain.User; import net.cyb.demo.utils.JsonData ...
- Vue2 移动端 ui库 MintUI
MintUI MintUI是饿了么团队开发的基于移动端的vue组件库.用于搭建移动端界面. http://mint-ui.github.io/docs/#/zh-cn2