首页 > 其他分享 >SMU 2024 spring 天梯赛4

SMU 2024 spring 天梯赛4

时间:2024-04-14 16:57:43浏览次数:19  
标签:int spring SMU cin long 2024 ++ using

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)

image

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;
}

标签:int,spring,SMU,cin,long,2024,++,using
From: https://www.cnblogs.com/Kescholar/p/18134323

相关文章

  • 【Spring】AOP进阶-JoinPoint和ProceedingJoinPoint详解
    2024-04-141.前言在Spring AOP中,JoinPoint和ProceedingJoinPoint都是关键的接口,用于在切面中获取方法的相关信息以及控制方法的执行。它们的主要区别在于它们在AOP通知中的使用方式和功能。2.JoinPoint简介Joinpoint是面向切面编程(AOP)中的一个重要概念,指的是在应用程序执行......
  • whk 乱记(2024春季篇)
    序「结局的完美就像英雄电影情节……」循环节里我需要一个证明自己存在的依靠。2024.4.8~2024.4.14清明复课周。情绪波动以外总体平淡。语文:单元考班4,赢!数学:学统计,为casio举大旗。整了立几里的「球」相关,回头考一直爆炸到单元考,菜就多练。英语:每天稳定20min写完高......
  • 20240323 专项训练
    random给出一个有向无环的连通图。小A需要从\(1\)号点走到\(n\)号点。保证图里所有的点都能够到达\(N\)号点。小A每次会等概率的随机一个能直接走到的节点走过去。求小A从一号点走到\(n\)号点期望需要经过多长的路径。对于\(30\%\)的数据,保证\(1\len,m\le......
  • 2024年4月14日-UE5-时间膨胀、慢动作、切换地图、刷BOSS
    把BOSS变大一点 打开我的游戏基础,蓝图里新建一个数组的变量,用来监控场上所有的敌人是否被击杀 打开怪物总类,在所有怪物初始化之后放入数组,死亡后移出数组,数组为空就召唤Boss 在我的游戏基础蓝图里,新建一个自定义事件 回到怪物总类里,再怪物死亡后,添加一个序列怪物......
  • 20240330 专项训练
    Tajan/序列问题专项save原题链接煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援......
  • SpringBoot项目中对定义的多个BeanPostProcessor排序
    前言BeanPostProcessor是Spring提供的一种扩展机制,可以让我们在bean初始化前后做一些额外的操作,Spring中的@Async,@Scheduled,@RabbitHandler等注解的底层实现都是BeanPostProcessor在起作用,如RabbitListenerAnnotationBeanPostProcessor。代码示例@Configurationpub......
  • 2024最新家庭版升级专业版密钥
    Windows11专业版是面向小型企业和组织的Windows11版本。它包含了家庭版的所有功能,并增加了一些额外的功能,例如:设备加密:使用BitLocker对设备上的驱动器进行加密,以保护敏感数据。远程桌面:从任何位置远程连接到您的设备。多用户登录:允许多个用户同时使用您的设备,每个用户......
  • q3-瞎汤姆养-2024.4.14
    第一批买的黑水虻孵化卵的时候没管理好,人为的搞死了,然后又买了一批,这批感觉活了点,这批是4月6日买的。不过看在鸡粪里不是特别活跃,是不是温度太高或者太低了,这个我不太知道。主要还是后期管理需要弄家里一直不给我地方搞,这个还需要空间才能玩得转,还要防止它跑出去,成虫是会飞的。......
  • java: 无法访问org.mybatis.spring.annotation.MapperScan、类文件具有错误的版本 61.
    使用的Mybatis-spring依赖的版本3.0.1太高,将版本改为2.2.2<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><depende......
  • Hystrix应用:如何在Spring Boot中使用Hystrix?
    引言在微服务架构的发展过程中,面对复杂的服务依赖和不可预见的系统故障,如何提升系统的容错能力成为了一个非常急迫且重要的能力。由Netflix(网飞)公司开发的Hystrix库,作为一个服务熔断和隔离框架,能有效地帮助开发者控制服务间的交互,防止系统间的级联故障。本文将带你详细了解......