首页 > 其他分享 >SMU 2024 spring 天梯赛自主训练3

SMU 2024 spring 天梯赛自主训练3

时间:2024-03-31 15:35:34浏览次数:22  
标签:cout int spring SMU cin 2024 ++ vector

SMU 2024 spring 天梯赛自主训练3

7-1 2018我们要赢 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

2018
wo3 men2 yao4 ying2 !

7-2 打折 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n,r;
    cin >> n >> r;
    printf("%.2lf\n", n * (r) * 0.1);

    return 0;
}

7-3 电子汪 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int a,b;
    cin >> a >> b;
    for(int i = 0;i < a+ b;i ++)
        cout << "Wang!";

    return 0;
}

7-4 谁是赢家 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int pa, pb,a=0,b=0;
    cin >> pa >> pb;
    for(int i = 0;i < 3;i ++){
        int x;
        cin >> x;
        a += (x == 0);
        b += (x == 1);
    }

    if(a + pa > b + pb && b != 3) {
        printf("The winner is a: %d + %d\n",pa,a);
    }else{
        printf("The winner is b: %d + %d\n",pb,b);
    }

    return 0;
}

7-5 福到了 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    char c;
    int n;
    cin >> c >> n;
    vector<string> s(n), ans(n);
    getline(cin, s[0]);
    for (int i = 0; i < n; i ++) {
        getline(cin , s[i]);
        ans[i] = s[i];
        reverse(ans[i].begin(), ans[i].end());
    }

    reverse(ans.begin(), ans.end());
    if (ans == s) {
        cout << "bu yong dao le\n";
    }
    for (auto str : ans) {
        for (auto i : str)
            if (i != ' ') cout << c;
            else cout << ' ';
        cout << '\n';
    }
    
    return 0;
}

7-6 倒数第N个字符串 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int L, n;
    cin >> L >> n;

    string s = string(L, 'z');
    for (int i = 1; i < n; i ++) {
        int cnt = L - 1;
        s[cnt]--;
        while (s[cnt] < 'a' && cnt >= 0) {
            s[cnt] = 'z';
            s[--cnt] --;
        }
    }

    cout << s << '\n';

    return 0;
}

7-7 天梯赛座位分配 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int n, sum = 0, m;
	cin >> n, m = n;
	vector<int> a(n + 1), now(n + 1);
	for (int i = 1; i <= n; i ++) {
		cin >> a[i];
		a[i] *= 10;
		sum += a[i];
	}

	vector ans(n + 1, vector<int>());
	int people = 0, val = 1;
	while (sum--) {
		for (int i = 1; i <= n; i ++) {
			if (ans[i].size() < a[i]) {
				ans[i].push_back(val);
				if (people + 1 == n) val += 2;
				else val ++;
				people = 0;
				for (int j = 1; j <= n; j ++)
					if (ans[j].size() >= a[j])
						people ++;
			}
		}
	}

	for (int i = 1; i <= n; i ++) {
		cout << '#' << i << '\n';
		int cnt = 1;
		for (int j = 0; j < ans[i].size(); j ++) {
			cout << ans[i][j] << " \n"[cnt % 10 == 0];
			cnt ++;
		}
	}

	return 0;
}

7-8 7206 猜数字 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

直接从\(1000 \sim 9999\)枚举符合n个要求的数,如果只有一个说明答案唯一,否则就不能确定;

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;

    auto check = [](int x, array<int, 3> Case) {
        vector<int> NumX(5), NumC(5);
        for (int i = 4; i >= 1; i --) {
            NumX[i] = x % 10, x /= 10;
            NumC[i] = Case[0] % 10, Case[0] /= 10;
        }

        int SameNum = 0, SameLoc = 0;
        for (int i = 1; i <= 4; i ++)
            if (NumC[i] == NumX[i]) SameLoc ++;
        for (int i = 1; i <= 4; i ++)
            for (int j = 1; j <= 4; j ++)
                if (NumC[j] == NumX[i]) {
                    SameNum ++, NumC[j] = -1;
                    break;
                }
        return (SameLoc == Case[2] && SameNum == Case[1]);
    };

    while (cin >> n) {
        if (!n) break;
        vector<array<int, 3>> Case(n);
        for (auto &[a, b, c] : Case)
            cin >> a >> b >> c;
        int Ke = 0, ans = 0;
        for (int i = 1000; i < 10000; i ++) {
            int m = 0;
            for (auto v : Case)
                if (check(i, v)) m ++;
            if (m == n) Ke ++, ans = i;
        }

        if (Ke == 1) cout << ans << '\n';
        else cout << "Not sure\n";
    }


    return 0;
}

7-9 分而治之 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

并查集;

考虑将攻打的城市除去外其余点是否都不能连通;

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

struct UFS {
    int n;
    vector<int> fa;

    UFS(int n): n(n) {
        fa.resize(n + 1);
        for (int i = 0; i <= n; i ++)
            fa[i] = i;
    }

    int find(int x) {
        return fa[x] == x ? x : find(fa[x]);
    }

    void unin(int x, int y) {
        x = find(x), y = find(y);
        if (x != y) {
            fa[x] = y;
        }
    }
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);


    int n, m;
    cin >> n >> m;
    vector<PII> edge(m + 1);
    for (int i = 1; i <= m; i ++) {
        int u, v;
        cin >> u >> v;
        edge[i] = {u, v};
    }

    int k;
    cin >> k;
    while (k --) {
        int ke ;
        cin >> ke;
        set<int> cuit;
        for (int i = 0; i < ke; i ++) {
            int x;
            cin >> x;
            cuit.insert(x);
        }

        UFS ufs(n);
        for (auto [u, v] : edge) {
            if (cuit.count(u) || cuit.count(v)) continue;
            ufs.unin(u, v);
        }

        int num = 0;
        for (int i = 1; i <= n; i ++) {
            if (ufs.find(i) == i) num ++;
        }
        
        if (num == n) cout << "YES\n";
        else cout << "NO\n";
    }

    return 0;
}

7-10 小字辈 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

dfs找到最大辈分并更新每个人的辈分;

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> fa(n + 1), Bei(n + 1);
    int root = 0, mx = 0;
    vector g(n + 1, vector<int>());
    for (int i = 1; i <= n; i ++) {
        cin >> fa[i];
        if (fa[i] == -1) root = i;
        else {
            g[fa[i]].push_back(i);
        }
    }

    auto dfs = [&](auto dfs, int x) -> void{
        Bei[x] ++;
        for (auto v : g[x]) {
            Bei[v] += Bei[x];
            dfs(dfs, v);
        }
    };

    dfs(dfs, root);

    for (int i = 1; i <= n; i ++)
        mx = max(mx, Bei[i]);

    cout << mx << '\n';

    vector<int> ans;
    for (int i = 1; i <= n; i ++)
        if (Bei[i] == mx)
            ans.push_back(i);

    for (auto i : ans)
        cout << i << " \n"[i == ans.back()];

    return 0;
}

7-11 名人堂与代金券 - SMU 2024 spring 天梯赛自主训练3 (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,g,k;
    cin >> n >> g >> k;
    vector<pair<string,int>> s(n);
    
    int sum = 0;
    for(auto &[x,y] : s){
        cin >> x >> y;
        if(y >= g) sum += 50;
        else if(y >= 60) sum += 20;
    }

    sort(s.begin(),s.end(),[](pair<string,int> a,pair<string,int> b){
        if(a.second != b.second) return a.second > b.second;
        return a.first < b.first;
    });

    cout << sum << '\n';

    int now = 1;
    for(int i = 0;i < n;i ++){
        int cnt = 1;
        cout << now << ' ' << s[i].first << ' ' << s[i].second << '\n';
        while(i + 1 < n && s[i].second == s[i + 1].second){
            i ++;
            cnt ++;
            cout << now << ' ' << s[i].first << ' ' << s[i].second << '\n';
        }
        now += cnt;
        if(now > k) break;
    }

    return 0;
}

7-12 秀恩爱分得快 - SMU 2024 spring 天梯赛自主训练3 (pintia.cn)

这题我真的很想吐槽下;

wa了30多发,感觉很ex啊,有0和-0这玩意,而且还有可能两者就没出现在照片里过,还有些函数像是abs,stoi啊,能用一次就用一次,不要多次调用,本来\(\mathcal{O}(mk^2)\)的复杂度也很难过吧,没过那就要要注意一下上面的点,还是冲过去了,400多ms,还有就是可以用vector去记录照片里的人,还有还有,就是最后找出来的ma和mb不能直接比较等于,要和他们各自对对方的亲密度比较,就因为这个玩意一直在测试点5wa,真的服了;

#include <bits/stdc++.h>

using namespace std;

using i64 = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;
    vector val(n, vector<double>(n, 0));
    vector<int> fu(n, 1);

    for (int i = 0; i < m; i ++) {
        int k;
        cin >> k;
        vector<int> people(k);
        for (int j = 0; j < k; j ++) {
            string s;
            cin >> s;
            int x = stoi(s);
            if (s[0] == '-') x = -x, fu[x] = -1;
            people[j] = x;
        }
        double ok = 1.0 / k;
        for (int l = 0; l < k; l ++) {
            for (int r = l + 1; r < k; r ++) {
                int j = people[l], p = people[r];
                if (fu[j] != fu[p]) {
                    val[j][p] += ok;
                    val[p][j] += ok;
                }
            }
        }
    }

    int a, b;
    string x, y;
    cin >> x >> y;
    a = stoi(x), b = stoi(y);
    if (x[0] == '-') a = -a, fu[a] = -1;
    if (y[0] == '-') b = -b, fu[b] = -1;
    double ma = 0, mb = 0;
    for (int i = 0; i < n; i ++) {
        if (fu[i] != fu[a])
            ma = max(ma, val[a][i]);
        if (fu[i] != fu[b])
            mb = max(mb, val[b][i]);
    }

    auto print = [&](int x, int y) {
        if (fu[x] == -1) cout << '-';
        cout << x << ' ';
        if (fu[y] == -1) cout << '-';
        cout << y << '\n';
    };

    if (ma == val[a][b] && mb == val[b][a]) {
        print(a, b);
    } else {
        for (int i = 0; i < n; i ++) {
            if (val[a][i] == ma && fu[a] != fu[i]) {
                print(a, i);
            }
        }
        for (int i = 0; i < n; i ++) {
            if (val[b][i] == mb && fu[b] != fu[i]) {
                print(b, i);
            }
        }
    }

    return 0;
}

标签:cout,int,spring,SMU,cin,2024,++,vector
From: https://www.cnblogs.com/Kescholar/p/18106782

相关文章

  • SMU Winter 2024 div2 ptlks的周报Week 7(3.25-3.31)
    哈夫曼编码对出现频率大的字符赋予较短的编码,对出现频率小的字符赋予较长的编码。哈夫曼树的建树过程为,每次选取最小和次小的根节点,将它们之和作为它们的根节点,左子节点为小点,右子节点为次小点,直至仅剩一棵树。一棵哈夫曼树,左子树为0,右子树为1,以根节点到叶子结点的路径作为每个叶......
  • Springboot整合Mybatis
    整合生产者默认如果在windows安装了rabbitmq是不用配置信息的,因为存在默认的配置整合流程:导包----------编写配置-----------写代码在springboot中存在很多template,MQ就是其中的一种导包其实不需要导包,在创建springboot项目时,勾选MQ,就可以了编写配置#......
  • SpringBoot配置静态资源访问
    默认的静态资源映射SpringBoot中的SpringMVC模块利用ResourceHttpRequestHandler来处理静态内容,对静态资源的映射提供了默认的配置。默认情况下,SpringBoot按如下优先级,从上到下将/**所有的资源访问映射到以下目录:classpath:/META-INF/resources/classpath:/resources/......
  • 解析两大Java框架:Spring与Spring Boot的区别
    Spring框架基本介绍Spring是一个开源的Java平台,它最初是为了解决企业级应用开发的复杂性而创建的。作为一个全面的编程和配置模型,Spring提供了一个框架,让开发者可以构建轻量级、松耦合的应用。SpringBoot基本介绍SpringBoot是基于Spring的一个框架,设计理念是简化新Sp......
  • SpringMVC常见面试题
    1:Springmvc执行流程回答:版本1:视图版本,jsp用户发送出请求到前端控制器DispatcherServletDispatcherServlet收到请求调用HandlerMapping(处理映射器)HandlerMapping找到具体的处理器,生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServletDispatcherServlet调......
  • 会员制医疗预约服务管理信息系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)1.系统功能模块2.管理员功能模块......
  • 财务管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)目录1.管理员功能效果图1.1.员工功能模块2.系统功能设计3.数据库E......
  • SpringAOP增强-几种不同将注解和切面方法的关联方式
    @Around的作用既可以在目标方法之前织入增强动作,也可以在执行目标方法之后织入增强动作;可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标目标方法的执行;可以改变执行目标方法的参数值,也可以改变执行目标方法之后的返回值;当需要改变目标方法的返回值时,只能使用Aro......
  • 20240331_搜索练习
    目录P3206DungeonMasterP3207LakeCountingP3208TheCastleP896仙岛求药P429【基础】走迷宫P2465迷宫问题P952【入门】算24点P3206DungeonMaster这题是一个三维迷宫,其中用‘.’表示空地,‘#’表示障碍物,‘S’表示起点,‘E’表示终点,求从起点到终点的最小移动次......
  • Spring AOP 和 拦截器 获取类上与方法上的注解
    在做一个获取目标注解的鉴权功能时,想到了AOP与拦截器两种方式,其中@HasPermission是我自定义的注解,以下分别为AOP与拦截器获取访问目标类与方法上的注解的方法。由于我的系统在拦截器上配置了拦截过则,所以我选的是拦截器的方式,读者可根据自己的需求来。一、SpringAOP方式获取......