大学生团体天梯赛(第十一届)

题目地址:天梯赛在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int main() {
	puts("I'm gonna win! Today!\n2022-04-23");
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n, v;
int main() {
	cin >> n >> v;
	cout << n / v;
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int a, b, c, d;
int main() {
	cin >> a >> b >> c >> d;
	if(c < a && d < a) {
		cout << c << "-N" << " " << d << "-N\n";
		puts("zhang da zai lai ba");
	} else if(c >= a && d >= a) {
		cout << c << "-Y" << " " << d << "-Y\n";
		puts("huan ying ru guan");
	} else if(c >= b || d >= b) {
		cout << c << "-Y" << " " << d << "-Y\n";
		printf("qing %d zhao gu hao %d", (c >= b ? 1 : 2), (d >= b ? 1 : 2));
	} else {
		printf("%d-%c %d-%c\n", c, (c >= a ? 'Y' : 'N'), d, (d >= a ? 'Y' : 'N'));
		printf("%d: huan ying ru guan", (c >= a ? 1 : 2));
	}
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
long long a, b;
int main() {
	cin >> a >> b;
	a += b, b = 1;
	for(int i = 1; i <= a; ++i) {
		b *= i;
	}
	cout << b;
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int a[6][6], x;
int main() {
	for(int i = 0; i < 6; ++i) {
		cin >> x;
		a[i][x - 1] = 1;
	}
	cin >> x;
	for(int i = 0; i < 6; ++i) {
		int cnt = 0, j = 5;
		for(; j >= 0 && cnt < x - 1; --j) {
			if(!a[i][j]) ++cnt;
		}
		cout << (i ? " " : "") << (a[i][j] ? j : j + 1);
	}
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
string a, b, s1, s2;
void f(string a, string& s) {
	for(int i = 1; i < a.length(); ++i) {
		if(a[i] % 2 == a[i - 1] % 2) {
			s += max(a[i], a[i - 1]);
		}
	} 
}
int main() {
	cin >> a >> b;
	f(a, s1), f(b, s2);
	if(s1 == s2) cout << s1;
	else cout << s1 << endl << s2; 
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, m, q, cnt, t, c;
int main() {
	cin >> n >> m >> q;
	cnt = n * m;
    vector<vector<int>> mp(n + 1, vector<int>(m + 1));
	while(q--) {
		cin >> t >> c;
		if(t) {
			for(int i = 1; i <=n; ++i) {
				if(!mp[i][c]) --cnt, mp[i][c] = 1;
			}
		} else {
			for(int i = 1; i <= m; ++i) {
				if(!mp[c][i]) --cnt, mp[c][i] = 1;
			}
		}
	} 
	cout << cnt;
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n, m, k, x, last = INT_MAX;
queue<int> ans;
deque<int> lt;
stack<int> st; 
void print(int cnt = 0) {
	while(!ans.empty()) {
		cout << (cnt++ ? " " : "") << ans.front();
		ans.pop();
	}
	putchar('\n');
	last = INT_MAX;
}
int main() {
	cin >> n >> m >> k;
	while(n--) {
		cin >> x;
		lt.push_back(x);
	}
	while(!lt.empty() || !st.empty()) {
		if(!st.empty() && st.top() <= last) {
			ans.push(st.top());
			last = st.top();
			st.pop();
			if(ans.size() == k) print();
		} else {
			if(lt.empty()) {
				print();
			} else {
				x = lt.front();
				lt.pop_front();
				if(x <= last) {
					ans.push(x);
					last = x;
					if(ans.size() == k) print();
				} else {
					if(st.size() < m) {
						st.push(x);
					} else {
						print();
						lt.push_front(x);
					}
				}
			}
		}
	}
	if(!ans.empty()) print();
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
string s1, s2, now = "00:00:00";
set<pair<string, string>> st;
int n;
int main() {
	cin >> n;
	while(n--) {
		cin >> s1 >> s2 >> s2;
		st.insert({s1, s2});
	}
	st.insert({"23:59:59",""});
	for(auto i :st) {
		if(i.first != now) cout << now << " - " << i.first << endl; 
		now = i.second;
	}
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int f[N], dis[N], sum, maxx, n, m, x, ans;
int dfs(int x, int cnt) {
	if(f[x] == -1 || dis[x]) {
		maxx = max(maxx , cnt + dis[x]);
		return cnt * 2;
	}
	ans = dfs(f[x], cnt + 1), dis[x] = dis[f[x]] + 1;
	return ans;
} 
int main(){
	cin >> n >> m;
	for(int i = 1; i <= n; ++i) {
		cin >> f[i];
	} 
	while(m--) {
		cin >> x;
		sum += dfs(x, 0);
		cout << sum - maxx << endl;
	}
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 505;
int a[N][N], sex[N], d[N];
int n, k, u, v, ans1 = 1e9, ans2 = 1e9;
char c;
vector<int> ans_m, ans_f;
void print(const vector<int>& vt, int cnt = 0) {
	for(int i = 0; i < vt.size(); ++i) {
		cout << (cnt++ ? " " : "") << vt[i];
	}
	putchar('\n');
}
int main() {
	cin >> n,getchar();
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) {
			if(i == j) a[i][j] = 0;
			else a[i][j] = 1e9; 
		}
	}
	for(int i = 1; i <= n; ++i) {
		scanf("%c %d", &c, &k);
		sex[i] = (c == 'M' ? 0 : 1);
		for(int j = 0; j < k; ++j) {
			scanf("%d:%d", &u, &v);
			a[i][u] = v;
		}
		getchar();
	}
	for(int k = 1; k <= n; ++k) {
		for(int i = 1; i <= n; ++i) {
			for(int j = 1; j <= n; ++j) {
				a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
			}
		} 
	}
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) {
			if(sex[i] ^ sex[j]) {
				d[i] = max(d[i], a[j][i]);
			}
		}
	}
	for(int i = 1; i <= n; ++i) {
		if(sex[i]) ans1 = min(ans1, d[i]);
		else ans2 = min(ans2, d[i]);
	}
	for(int i = 1; i <= n; ++i) {
		if(!sex[i] && d[i] == ans2) ans_m.push_back(i);
		if(sex[i] && d[i] == ans1) ans_f.push_back(i); 
	}
	print(ans_f),print(ans_m);
	return 0;
}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int n, cnt = 1;
char c;
unordered_map<string, int> si;
unordered_map<int, string> is;
int in_degree[N];
vector<int> road[N];
priority_queue<string,vector<string>,greater<string> > Q;
queue<string> res;
int main() {
	cin >> n;
	getchar();
	vector<vector<string>> a(n);
	for(int i = 0; i < n; ++i) {
		string mid;
		while((c = getchar()) != '\n') {
			if(c != '.') {
				mid.push_back(c);
			} else {
				a[i].emplace_back(mid);
				if(!si.count(mid)) {
					is[cnt] = mid, si[mid] = cnt++;
				}
				mid.clear();
			}
		}
		a[i].emplace_back(mid);
		if(!si.count(mid)) {
			is[cnt] = mid, si[mid] = cnt++;
		}
		if(i && a[i].size() == a[i - 1].size()) {
			for(int j = 0; j < a[i].size(); ++j) {
				if(a[i][j] != a[i - 1][j]) {
					int pre = si[a[i][j]], cur = si[a[i - 1][j]];
					++in_degree[pre];
					road[cur].push_back(pre);
					break;
				}
			}
		}
	}
	for(int i = 1; i < cnt; ++i) {
		if(!in_degree[i]) {
			Q.push(is[i]);
		}
	}
	while(!Q.empty()) {
		auto s = Q.top();
		Q.pop();
		res.push(s);
		int k = si[s];
		for(auto& y :  road[k]) {
			if(--in_degree[y] == 0) {
				Q.push(is[y]);
			}
		}
	}
	while(!res.empty()) {
		cout << res.front();
		res.pop();
		if(res.size()) {
			cout << ".";
		}
	}
	return 0;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东大21计科小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值