首页 > 其他分享 >2024年天梯成信校赛

2024年天梯成信校赛

时间:2024-03-20 13:22:21浏览次数:19  
标签:vector cout int auto cin 2024 成信 ans 校赛

2024年天梯成信校赛

L1-1 代码胜于雄辩 - 2024年天梯成信校赛补题 (pintia.cn)

就用PHP

No PHP can be used in this contests

L1-2 收水费 - 2024年天梯成信校赛补题 (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;
 	if(n <= 100) cout << 2 * n << '\n';
 	else if(n < 500) cout << 200 + (n - 100) * 4 << '\n';
 	else cout << 10 * n << '\n';

	return 0;
}

L1-3 日期 - 2024年天梯成信校赛补题 (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 s;
 	cin >> s;
 	if(s.size() <6){
 		if(s.substr(0,2) <= "24") s = "20" + s;
 		else s = "19" + s;
 	}

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

	return 0;
}

L1-4 回文数 - 2024年天梯成信校赛补题 (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 t;
 	cin >> t;
 	while(t --){
 		string s;
 		cin >>s;
 		bool ok = true;
 		for(int i = 0,j = s.size() - 1;i < j;i ++,j--){
 			if(s[i] != s[j]){
 				ok = false;
 				break;
 			}
 		}
 		cout << (ok ? "true" : "false") << '\n';
 	}

	return 0;
}

L1-5 yihan的新函数 - 2024年天梯成信校赛补题 (pintia.cn)

数的奇偶性和其位数的奇偶性一致时,就从第二位往后依次变为\(0\),否则就是从第一位开始

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

 	i64 ans = 0;
 	while(n --){
 		string s;
 		cin >> s;
 		for(int i = ((stoi(s) & 1) == (s.size() & 1));i < s.size();i += 2){
 			s[i] = '0';
 		}
 		ans += stoi(s);

 	}
 	cout << ans << '\n';

	return 0;
}

L1-6 二进制 - 2024年天梯成信校赛补题 (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 a, b;
	cin >> a >> b;
	const int N = 1e5 + 10;
	vector<int> ans(N);
	reverse(a.begin(), a.end());
	reverse(b.begin(), b.end());
	int n = max(a.size(), b.size()) + 1;
	a += string(n-a.size(),'0');
	b += string(n-b.size(),'0');

	string res = "";
	for(int i = 0;i <= n;i ++){
		int now = (a[i] - '0') + (b[i] - '0') + ans[i];
		ans[i + 1] += now / 2;
		ans[i] = now % 2;
		res += (ans[i] + '0');
	}

	while(res.back() == '0') res.pop_back();
	reverse(res.begin(),res.end());
	cout << res << '\n';

	return 0;
}

L1-7 大山中的学院 - 2024年天梯成信校赛补题 (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;
	vector val(n, vector<int>(m));
	vector<string> s(n);
	for (auto &i : s) cin >> i;
	vector<int> a(k);
	for (auto &i : a) cin >> i;

	int dex = 0, ans = 0, x, y;
	int u[] = {1, -1, 0, 0}, v[] = {0, 0, 1, -1};
	for (int i = 0; i < n; i ++) {
		for (int j = 0; j < m; j ++) {
			if (s[i][j] == '*') {
				for (int p = 0; p < 4; p ++) {
					int dx = i + u[p];
					int dy = j + v[p];
					if (dx >= 0 && dx < n && dy >= 0 && dy < m && s[dx][dy] == '-') {
						val[dx][dy] += a[dex];
						if (val[dx][dy] > ans) {
							ans = val[dx][dy];
							x = dx + 1, y = dy + 1;
						}
					}
				}
				dex ++;
			}
		}
	}

	cout << x << ' ' << y << '\n';
	cout << ans << '\n';

	return 0;
}

L1-8 堆积木 - 2024年天梯成信校赛补题 (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> a(n),Top,num;
	for(auto &i : a) cin >> i;

	for(auto i : a){
		if(Top.empty()){
			Top.push_back(i);
			num.push_back(1);
		}else{
			int now = INT_MAX, loc = -1,h = 0;
			for(int j = 0;j < Top.size();j ++){
				if(Top[j] > i && Top[j] <= now && num[j] > h){
					now = Top[j];
					loc = j;
					h = num[j];
				}
			}
			if(loc == -1){
				Top.push_back(i);
				num.push_back(1);
			}else{
				Top[loc] = i;
				num[loc] ++;
			}
		}
	}

	int mx = 0;
	for(auto i : num)
		mx = max(i, mx);

	cout << mx << ' ' << Top.size() << '\n';

	return 0;
}

L2-1 买!买!买! - 2024年天梯成信校赛补题 (pintia.cn)

dfs判环,注意应该设置一个全局标记,而不是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,m;
	cin >> n >> m;
	vector g(n + 1,vector<int>());

	for(int i = 0;i < m;i ++){
		int u,v;
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
    
    int ans = 0, res = 0;
    bool ok = false;
    vector<bool> vis(n + 1);
    auto dfs = [&](auto self,int u,int fa)->void{
        vis[u] = true;
        for(auto v : g[u]){
            if(v == fa) continue;
            if(vis[v]) {
                ok = 1;
                continue;
            }
            self(self,v,u);
        }
    };

    for(int i = 1;i <= n;i ++){
        if(!vis[i]){
            ans ++;
            dfs(dfs,i,0);
			res += ok;
			ok = 0;
        }
    }

    cout << ans << ' ' << res << '\n';

	return 0;
}

L2-2 洗牌&发牌 - 2024年天梯成信校赛补题 (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);

	const string K[] = {"0", "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
	int n, m, k, p;
	cin >> n >> k >> m >> p;
	vector s(m + 1, vector<string>(k));
	for (auto &i : s[0])
		cin >> i;
	for (int i = 1; i <= m; i ++) {
		int l = k / 2, r = 0, cnt = 0;
		while (cnt < k) {
			s[i][cnt ++] = s[i - 1][l ++];
			s[i][cnt ++] = s[i - 1][r ++];
		}
	}

	vector<string> ans;
	for (int i = p - 1, x = 0; i < k && x < 4; i += n, x ++) {
		ans.push_back(s[m][i]);
	}

	if (ans.size() < 4) cout << "Error:cards not enough\n";
	else {
		for (auto v : ans) {
			int num = 0, cnt = 0;
			while (v[cnt] >= '0' && v[cnt] <= '9')
				num = num * 10 + (v[cnt] - '0'), cnt ++;
			cout << K[num] << v.back() << '\n';
		}
	}

	return 0;
}

L2-3 Gwen的小剪刀 - 2024年天梯成信校赛补题 (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 Node{
	int u,v,w,c;
};

struct UFS {
    int sz;
    vector<int> rank, p;
    void link(int x, int y) {
        if (x == y)
            return;
        if (rank[x] > rank[y])
            p[y] = x;
        else
            p[x] = y;
        if (rank[x] == rank[y])
            rank[y]++;
    }
    void init(int n) {
        sz = n;
        rank.resize(n + 1);
        p.resize(n + 1);
        for (int i = 0; i <= sz; i++) {
            p[i] = i;
            rank[i] = 0;
        }
    }
    int find(int x) {
        return x == p[x] ? x : (p[x] = find(p[x]));
    }
    void unin(int x, int y) {
        link(find(x), find(y));
    }
    void compress() {
        for (int i = 0; i < sz; i++)
            find(i);
    }
};

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

	int n,m;
	cin >> n >> m;
	vector<Node> Edge(m);
	for(int i = 0;i < m;i ++){
		int u,v,w,c;
		cin >> u >> v >> w >> c;
		Edge[i] = {u,v,w,c};
	}

	sort(Edge.begin(),Edge.end(),[&](Node a, Node b){
		return a.w < b.w;
	});

	auto check = [&](i64 x){
		UFS ufs;
		ufs.init(n);
		int cnt = 0;
		for(auto [u,v,w,c] : Edge){
			if(w < x) continue;
			u = ufs.find(u), v = ufs.find(v);
			if(u != v){
				ufs.unin(u,v);
				cnt ++;
			}
		}
		return cnt == n - 1;
	};

	i64 l = 1, r = 1e9, mi = 1;
	while(l <= r){
		i64 mid = (l + r) >> 1;
		if(check(mid)) l = mid + 1, mi = mid;
		else r = mid - 1;
	}

	sort(Edge.begin(),Edge.end(),[&](Node a,Node b){
		return a.c < b.c;
	});

	UFS ufs;
	ufs.init(n);

	i64 ans = 0;
	for(int i = 0;i < m;i ++){
		auto [u,v,w,c] = Edge[i];
		if(w < mi) continue;
		u = ufs.find(u),v = ufs.find(v);
		if(u != v){
			ufs.unin(u,v);
			ans += c;
		}
	}

	cout << mi << '\n' << ans << '\n';

	return 0;
}

L2-4 超时空之恋 - 2024年天梯成信校赛补题 (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 DIJ {
	using i64 = long long;
	using PII = pair<i64, i64>;
	vector<i64> dis;
	vector<vector<PII>> G;

	DIJ() {}
	DIJ(int n) {
		dis.assign(n + 1, 1e18);
		G.resize(n + 1);
	}

	void add(int u, int v, int w) {
		G[u].emplace_back(v, w);
	}

	void dijkstra(int s) {
		priority_queue<PII, vector<PII>, greater<PII>> que;
		dis[s] = 0;
		que.push({0, s});
		while (!que.empty()) {
			auto p = que.top();
			que.pop();
			int u = p.second;
			if (dis[u] < p.first) continue;
			for (auto [v, w] : G[u]) {
				if (dis[v] > dis[u] + w) {
					dis[v] = dis[u] + w;
					que.push({dis[v], v});
				}
			}
		}
	}
};

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

	int n, m, k;
	cin >> n >> m >> k;

	DIJ dij(4 * n);
	for (int i = 0; i < m; i ++) {
		int x, u, v, w;
		cin >> x >> u >> v >> w;
		u += x * n, v += x * n;
		dij.add(u, v, w);
		dij.add(v, u, w);
	}

	for (int i = 1; i <= n; i ++)
		for (int j = 1; j <= 2; j ++) {
			dij.add(i, i + j * n, k);
			dij.add(i + j * n, i, k);
		}

	dij.dijkstra(1);

	int T;
	cin >> T;
	vector<PII> ab(T);
	for (auto &[x, y] : ab)
		cin >> y >> x;

	sort(ab.begin(), ab.end());
	ab.push_back({LLONG_MAX, LLONG_MAX});
	i64 ans = 1e18;
	for (int i = 0; i < T; i ++) {
		auto [x, y] = ab[i];
		if (dij.dis[y] < x) {
			ans = min(ans, x);
		} else if (dij.dis[y] < ab[i + 1].first) {
			ans = min(ans, dij.dis[y]);
		}
	}
	if (ans == 1e18) cout << "-1\n";
	else cout << ans << '\n';

	return 0;
}

标签:vector,cout,int,auto,cin,2024,成信,ans,校赛
From: https://www.cnblogs.com/Kescholar/p/18084994

相关文章

  • 华为OD机试真题-推荐多样性-2024年OD统一考试(C卷)
    题目描述:推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略:1. 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推2. 每个列表的元素尽量均分为N份,如果不够N个,也......
  • 2024年是否是人形机器人的元年 —— 继OpenAI/Google/特斯拉之后黄仁勋也宣布NVIDIA公
    相关:https://www.youtube.com/watch?v=bMIRhOXAjYk......
  • 2024-03-20:用go语言,自 01背包问世之后,小 A 对此深感兴趣。 一天,小 A 去远游,却发现他的
    2024-03-20:用go语言,自01背包问世之后,小A对此深感兴趣。一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组。每组中的物品只能选择1件,现在他想知道最大的利用价值是多少?答案2024-03-20:来自左程云。灵捷3.5大体步骤如下:1.定义常量MAXN和MAXM,分别表......
  • 英伟达GTC2024大会开幕,发布机器人003计划,引领具身智能新时代
    一、背景在全球科技创新的前沿阵地,2024年3月的英伟达GPU技术大会(GTC)再次成为全球瞩目的焦点。在此次盛会上,英伟达公司创始人兼首席执行官黄仁勋先生不仅展示了其公司在加速计算和生成式AI领域的最新突破,更震撼发布了具有里程碑意义的“通用机器人003计划”,预示着人工智能与人......
  • 2024中国行政区域含港澳台【省市区县镇乡村】五级联动地址json数据
    GitHub-657258535/China-Area-Region-Administrative-Divisions:中华人民共和国行政区划:省级(省份)、地级(城市)、县级(区县)、乡级(乡镇街道)、村级(村委会居委会)五级联动地址数据。 中华人民共和国行政区划:省级(省份)、地级(城市)、县级(区县)、乡级(乡镇街道)、村级(村委会居委会)......
  • 20240319天梯赛训练
    P2669[NOIP2015普及组]金币#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingldb=longdouble;#defineintlonglongusingvi=vector<int>;usingpii=pair<int,int>;constintmod=998......
  • 水牛社推荐:2024年在家也能赚大钱的五个副业兼职
    今天,我在网络上读到这样一句话,它深深地触动了我:“职场人应时刻保持警惕,创业者则需深思熟虑后再行动”。身处这个日新月异的时代,我对此深有感触。如今的社会变革速度之快令人咋舌,就连公务员、教师等体制内的稳定职业,也无法保证一辈子的安稳。因此,发展兼职副业成为了年轻人的新......
  • 2024年3月18号题解
    DungeonMaster解题思路给格子编号,从1开始,这样我们就可以构建一个图对这个图跑迪杰斯特拉算法就可以得到我们需要的答案代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#include<limits.h>#defineuunsigned#......
  • 计数组合【2024蓝桥杯0基础】-学习笔记
    文章目录计数原理排列数组合数组合数性质例题分析代码复现例题2状态分析代码复现常见的排列组合问题圆排列代码复现第二类斯特林数感悟计数原理排列数组合数组合数性质例题分析代码复现defksm(a,b,c):ans=1%cwhileb!=0:......
  • 史上最全Java核心面试题(带全部答案)2024年最新版
    今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工......