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

SMU 2024 spring 天梯赛1

时间:2024-03-17 12:11:40浏览次数:29  
标签:cout int spring SMU cin 2024 fa num

SMU 2024 spring 天梯赛1

7-1 种钻石 - SMU 2024 spring 天梯赛1 (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, v;
    cin >> n >> v;
    cout << n / v << '\n';

    return 0;
}

7-2 1-1 输出金字塔图案 - SMU 2024 spring 天梯赛1 (pintia.cn)

   *
  ***
 *****
*******
//PHP

7-3 强迫症 - SMU 2024 spring 天梯赛1 (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);

    string n;
    cin >> n;
    if (n.size() < 6) {
        if (n.substr(0, 2) < "22") {
            n = "20" + n;
        } else
            n = "19" + n;
    }

    cout << n.substr(0, 4) << '-' << n.substr(4) << '\n';

    return 0;
}

7-4 小孩子才做选择,大人全都要 - SMU 2024 spring 天梯赛1 (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 x,y;
    cin >> x >> y;
    if(x > 0 && y > 0){
        cout << max(x,y) << ' ' << x + y << "\n^_^";
    }else if(x < 0 && y < 0) {
        cout << "0 0\n-_-";
    }else{
        cout << max(x,y) << ' ' << max(0,x+y) << "\nT_T";
    }

    return 0;
}

7-5 胎压监测 - SMU 2024 spring 天梯赛1 (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);

    vector<int> lun(6);
    for (auto &i : lun) cin >> i;

    int ma = lun[0];
    for (int i = 0; i < 4; i ++)
        ma = max(ma, lun[i]);

    int ck = -1,num = 0;
    for(int i = 0;i < 4;i ++){
        int x = abs(lun[i] - ma);
        if(x > lun[5] || lun[i] < lun[4]){
            num ++, ck = i;
        }
    }
    if(!num){
        cout << "Normal";
    }else if(num == 1){
        cout << "Warning: please check #" <<  ck + 1 << '!';
    }else{
        cout << "Warning: please check all the tires!";
    }

    return 0;
}

7-6 吉老师的回归 - SMU 2024 spring 天梯赛1 (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, m;
    cin >> n >> m;

    string s;
    getline(cin, s);
    for (int i = 0; i < n; i ++) {
        getline(cin, s);
        if(s.find("qiandao") == -1 && s.find("easy") == -1){
            m --;
            if(m == -1){
                cout << s << '\n';
                exit(0);
            }
        }
    }

    cout << "Wo AK le";

    return 0;
}

7-7 静静的推荐 - SMU 2024 spring 天梯赛1 (pintia.cn)

两个成绩都满足要求的,直接答案加一即可,就不参与推荐名额,把满足天梯赛成绩的筛选出来后,取每个分数段的前k个即可

#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,k,s;
    cin >> n >> k >> s;

    int ans = 0;
    vector<int> m(300);
    for(int i = 0;i < n;i ++){
        int a,b;
        cin >> a >> b;
        if(a < 175) continue;
        if(b >= s) {
            ans ++;
            continue;
        }
        m[a] ++;
    }

    for(int i = 175;i <= 290;i ++)
        ans += (m[i] > k ? k : m[i]);

    cout << ans << '\n';

    return 0;
}

7-8 机工士姆斯塔迪奥 - SMU 2024 spring 天梯赛1 (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);

    i64 n,m,q;
    cin >> n >> m >> q;
    vector<array<int,2>> vis(100100);
    for(int i = 0;i < q;i ++){
        int op,x;
        cin >> op >> x;
        if(vis[x][op]) continue;
        vis[x][op] ++;
        if(op) m--;
        else n --;
    }

    cout << n * m << '\n';

    return 0;
}

7-9 彩虹瓶 - SMU 2024 spring 天梯赛1 (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,m,k;
    cin >> n >> m >> k;
    while(k--){
        stack<int> Q,now;
        for(int i = 0;i < n;i ++){
            int x;
            cin >> x;
            if(Q.size() > m) continue;
            if(now.empty() && x == 1){
                now.push(x);
            }else if(now.size() && x == now.top() + 1){
                now.push(x);
            }else Q.push(x);
            if(now.size()){
                while(Q.size() && Q.top() == now.top() + 1){
                    now.push(Q.top());
                    Q.pop();
                }
            }
        }
        if(now.size() != n)
            cout << "NO\n";
        else cout << "YES\n";
    }

    return 0;
}

7-10 简单计算器 - SMU 2024 spring 天梯赛1 (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;
    cin >> n;
    vector<int> num(n);
    for (auto &i : num) cin >> i;

    vector<char> op(n - 1);
    for (auto &i : op) cin >> i;

    while (num.size() > 1) {
        int x = num.back();
        num.pop_back();
        int y = num.back();
        num.pop_back();

        char z = op.back();
        op.pop_back();

        switch (z) {
        case '+': num.push_back(x + y);
            break;
        case '-': num.push_back(y - x);
            break;
        case '*': num.push_back(x * y);
            break;
        case'/': if (!x) {
                cout << "ERROR: " << y << "/0\n";
                exit(0);
            } else {
                num.push_back(y / x);
                break;
            }
        }
    }

    cout << num[0] << '\n';

    return 0;
}

7-11 龙龙送外卖 - SMU 2024 spring 天梯赛1 (pintia.cn)

假设每次送完后都要回到外卖站,则通过画图可以发现,其实每条路都走了两遍,现在加上不必返回外卖站,那我们只要把离外卖站即根节点最远的那条路线放到最后走,即只需走一遍,在之前的每条路的基础上减去最远的那条线即可

刚开始用了LCA,不过跟这题没关系,只需要计算每个点的深度以及记录其父节点,然后往上递归即可;

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

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

struct LCA {
    int n;
    vector<i64> dep;
    vector<vector<int>> e;
    vector<array<int, 21>> fa;
    LCA() {}
    LCA(int n) {
        dep.resize(n + 1);
        e.resize(n + 1);
        fa.resize(n + 1);
    }

    void add(int u, int v) {
        e[u].push_back(v);
        e[v].push_back(u);
    }

    //计算深度,处理各点祖先
    void dfs(int u, int father) {
        dep[u] = dep[father] + 1;

        fa[u][0] = father;
        for (int i = 1; i < 20; i ++)
            fa[u][i] = fa[fa[u][i - 1]][i - 1];

        for (auto v : e[u])
            if (v != father)
                dfs(v, u);
    }

    //最近公共祖先
    //两点集并的最近公共祖先为两点几分别的最近公共祖先的最近公共祖先,
    //即LCA(A∪B) = LCA(LCA(A), LCA(B));
    int lca(int u, int v) {
        if (dep[u] < dep[v]) swap(u, v);
        for (int i = 19; i >= 0; i --)
            if (dep[fa[u][i]] >= dep[v])
                u = fa[u][i];

        if (u == v) return v;

        for (int i = 19; i >= 0; i --)
            if (fa[u][i] != fa[v][i])
                u = fa[u][i], v = fa[v][i];
        return fa[u][0];
    }

    //d(u,v) = h(u) + h(v) - 2h(LCA(u,v));
    //其中d是树上两点间的距离,h代表某点到树根的距离
    int get_dis(int u, int v) {
        return dep[u] + dep[v] - 2 * dep[lca(u, v)];
    }
};

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

    int n, m, root;
    cin >> n >> m;
    LCA lca(n);
    for (int i = 1; i <= n; i ++) {
        int x;
        cin >> x;
        if (x == -1) root = i, x ++;
        lca.add(x, i);
    }

    lca.dfs(root, 0);

    i64 ans = 0;
    vector<bool> vis(n + 1);
    vis[root] = 1;
    auto dfs = [&](auto self, int u)->void{
        if (vis[u]) return ;
        vis[u] = 1;
        ans += 2;
        self(self, lca.fa[u][0]);
    };

    i64 ma = 0;
    while (m --) {
        int x;
        cin >> x;
        ma = max(ma, lca.dep[x]);
        dfs(dfs, x);
        cout << ans - ma + 1 << '\n';
    }

    return 0;
}

7-12 智能护理中心统计 - SMU 2024 spring 天梯赛1(补题) (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, m;
	cin >> n >> m;

	map<int, int> num, fa, people;
	map<string, int> id;

	auto up = [&](auto up, int x)->void{
		if (!x) return;
		num[x] ++;
		up(up, fa[x]);
	};

	auto down = [&](auto down, int x)->void{
		if (!x) return ;
		num[x] --;
		down(down, fa[x]);
	};

	auto pass = [&](auto pass, int x, int val)->void{
		if (!x) return ;
		num[x] += val;
		pass(pass, fa[x], val);
	};

	int cnt = 0;
	for (int i = 0; i < m; i ++) {
		string x, y;
		cin >> x >> y;
		if (!id[y]) id[y] = ++ cnt;
		if (x[0] >= '0' && x[0] <= '9') {
			people[stoi(x)] = id[y];
			up(up, id[y]);
		} else {
			if (!id[x]) id[x] = ++ cnt;
			fa[id[x]] = id[y];
			pass(pass, id[y], num[id[x]]);
		}
	}

	char op;
	while (cin >> op) {
		int x;
		string y;
		if (op == 'E') break;
		else if (op == 'T') {
			cin >> x >> y;
			down(down, people[x]);
			people[x] = id[y];
			up(up, id[y]);
		} else {
			cin >> y;
			cout << num[id[y]] << '\n';
		}
	}

	return 0;
}

标签:cout,int,spring,SMU,cin,2024,fa,num
From: https://www.cnblogs.com/Kescholar/p/18078408

相关文章

  • 基于Spring Boot在线远程考试系统—开题报告
    二、设计(论文研究)思路及工作方法1.设计思路本系统基于B/S结构模式,采用idea开发环境,Java语言,建模工具Visio,以及关系型数据库MySQL。在线远程考试系统采用前后端分离的模式进行开发。前端开发负责页面的编写及数据的渲染。后端开发负责提供API(接口)。前后端采用指定的API接口进......
  • 沃伦·巴菲特2023股东书(2024.2.24)-0-查理·芒格——伯克希尔·哈撒韦公司的建筑师
    2023letterhttps://www.berkshirehathaway.com/letters/2023ltr.pdf查理·芒格——伯克希尔·哈撒韦公司的建筑师查理·芒格于11月28日去世,距离他100岁生日仅33天。虽然在奥马哈出生和长大,但他一生中80%的时间都在其他地方定居。因此,直到1959年他35岁时,我才第一次......
  • 2024 年值得关注的三大 DevOps 趋势
    在过去几年中,DevOps世界以前所未有的速度发展,但它仍然是许多组织效率、创新和数字化转型的主要驱动力。Google的2023年加速DevOps状态报告显示,公司的软件交付性能质量可以预测组织绩效、团队绩效和员工福祉。2024年,从业者预计有几个趋势会对行业产生重大影响。随着时......
  • 20231325贾罗祁 2023-2024-2《Python程序设计》实验一报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验一报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年3月13日必修/选修:公选课1.实验内容熟悉Python的操作学会调试程序编译循环的剪刀石头布游戏创建gitee账户并推送上传......
  • springboot如何优雅的获取前端参数
    写在前面对于初学者来说,困难的不是理论知识,而是如何在程序中具体实现。现在的项目基本上都是前后端分离的项目,如何打通前后端,接收前端传过来的参数呢?废话不多说,这篇文章就来说一说接收前端参数的具体操作一、获取路径中的值1.1核心代码@GetMapping("/getArticle/{id}")pub......
  • 智能酒店管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着科技的进步和旅游业的繁荣,酒店行业正面临着前所未有的机遇与挑战。为了提高服务质量、运营效率以及顾客满意度,智能酒店管理系统应运而生。这种系统利用......
  • 灾情信息管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着自然灾害频发,及时有效的灾情信息管理对于灾害应对和救援工作至关重要。一个专业的灾情信息管理系统能够帮助政府和救援组织快速收集、处理和分析灾区数......
  • 智慧教室预约(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着教育数字化转型的深入,智慧教室成为提升教学质量和效率的重要环境。智慧教室预约系统能够有效管理教学资源,实现教室使用的优化配置,确保设备高效利用。它......
  • Spring基础
    beans.xml配置文件<!--不建议使用--><!--<beanid="user"class="com.jiang.pojo.user">--><!--<constructor-argindex="0"value="岳不群"/>--><!--</bean>--><!-......
  • 通俗易懂理解Spring空间的AOP
    在SpringAOP(面向切面编程)中,有几个核心概念:切点、切面、以及织入。我们用一个简单的比喻来理解这些概念。想象你是一名导演,正在拍摄一部电影。在这个比喻中:切点(Pointcut)对应于你决定在电影的哪些场景中插入特定的特效或音乐。在上面的代码中,@Pointcut("execution(public*com.......