西南民族大学 春季 2023 训练赛 7
题目详情 - L1-1 人与神 (pintia.cn)
换成php直接输出(
To iterate is human, to recurse divine.
题目详情 - L1-2 两小时学完C语言 (pintia.cn)
void solve() { cin >> n >> k >> m; cout << n - k * m << endl; }
题目详情 - L1-3 强迫症 (pintia.cn)
void solve() { cin >> n; m = n/100; if(m < 100){ if(m < 22) printf("20%02d-%02d",m,n%100); else printf("19%02d-%02d",m,n%100); } else{ printf("%d-%02d",m,n%100); } }
题目详情 - L1-4 降价提醒机器人 (pintia.cn)
void solve() { cin >> n >> m; for(int i = 0 ; i < n; i++){ double x; cin >> x; if(x < m) printf("On Sale! %.1lf\n",x); } }
题目详情 - L1-5 大笨钟的心情 (pintia.cn)
void solve() { for(int i = 0; i < 24 ; i++) cin >> pat[i]; while(cin >> m){ if(m < 0 || m >= 24) break; cout << pat[m] << ' ' << (pat[m] > 50 ? "Yes" : "No") << endl; } }
题目详情 - L1-6 吉老师的回归 (pintia.cn)
用getline如果是存字符串数组的话记得把第一行的缓存的换行给getchar()掉......
void solve() { string s1 = "qiandao", s2 = "easy"; cin >> n >> m; for(int i = 0; i <= n; i++) { string s; getline(cin , s); if(s.find(s1) == string::npos && s.find(s2) == string::npos) { if(m < 0){ cout << s << endl; return ; } m--; } } cout << "Wo AK le" << endl; }
题目详情 - L1-7 天梯赛的善良 (pintia.cn)
map<int,int> mp; void solve() { cin >> n; int minn = inf, maxx = -inf,v[N]; for(int i = 0; i < n; i++){ cin >> pat[i]; mp[pat[i]] ++; minn = min(minn, pat[i]); maxx = max(maxx, pat[i]); } cout << minn << ' ' << mp[minn] << endl; cout << maxx << ' ' << mp[maxx] << endl; }
题目详情 - L1-8 乘法口诀数列 (pintia.cn)
vector<int> v; void solve() { int a1,a2; cin >> a1 >> a2 >> n; v.push_back(a1); v.push_back(a2); int d = n; int cnt = 0; while(d--){ int x = v[cnt]; int y = v[++cnt]; if(x * y >= 10){ v.push_back(x * y / 10); v.push_back((x * y) % 10); } else{ v.push_back(x * y); } } for(int i = 0; i < n; i++) cout << v[i] << (i == n - 1 ? "\n" : " ") ; }
题目详情 - L2-1 包装机 (pintia.cn)
用栈进行模拟即可,轨道我用的是vector来存,可能需要注意的点就是框满了和轨道空了的情况.
void solve() { int s; stack<char> kuang; cin >> n >> m >> s; vector<string> str; str.push_back(" "); for(int i = 1; i <= n; i ++){ string s1; cin >> s1; str.push_back(s1); } int k; string ans = ""; while(cin >> k && k != -1){ if(k == 0){ if(kuang.empty()) continue; ans += kuang.top(); kuang.pop(); } else { if (str[k].empty()) continue; if ((int) kuang.size() >= s) { ans += kuang.top(); kuang.pop(); } char c = str[k][0]; kuang.push(c); str[k].erase(0, 1); } } cout << ans << endl; }
题目详情 - L2-2 病毒溯源 (pintia.cn)
因为最开始变异的病毒可能是随机的,所以要先找到他的根病毒(?和根节点差不多一个意思吧),然后从这个点开始dfs,找到最长的变异链即可, 对于他说的最小序列,个人觉得这里有两种方法,一是当两者长度相等时,直接令ans1等于小的那个即可(vector可直接比较),二是在存结点的时候可以排个序,这样就能保证最开始的那条变异即是最小序列.
#include <iostream> #include <string.h> #include <stdio.h> #include <vector> #include <map> #include <queue> #include <algorithm> #include <math.h> #include <cstdio> #include <set> #include <utility> #define inf 0x3f3f3f3f #define endl '\n' //#define int long long #define f first //#define s second using namespace std; const int N = 1e6+10, M = 1e6 + 10; //typedef long long ll; typedef pair<int,int> PII; //queue<PII> q1; //priority_queue <int,vector<int>,greater<int> > q2; int n,m,t,sa,pa,q,k,sorce,pat[N]; /* */ vector<int> shu[N]; vector<int> ans1,arr; bool vis[N]; int hai[N]; int ans = 0 ; void dfs(int x, vector<int> &arr){ if(arr.size() > ans1.size()){ ans1 = arr; } if(arr.size() == ans1.size()) { if(ans1 > arr) ans1 = arr; } for(auto j : shu[x]){ arr.push_back(j); dfs(j, arr); arr.pop_back(); } return ; } void solve() { cin >> n; for(int i = 0; i < n; i++){ int k; cin >> k; for(int j = 0; j < k; j++){ int x; cin >> x; vis[x] = true; shu[i].push_back(x); } // sort(shu[i].begin(), shu[i].end()); } for(int i = 0; i < n; i ++){ if(!vis[i]){ arr.push_back(i); dfs(i,arr); break; } } cout << ans1.size() << endl; for(int i =0; i < ans1.size(); i++) cout << ans1[i] << (i == ans1.size() -1 ? "\n" : " ") ; } signed main() { ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int Ke_scholar = 1; while(Ke_scholar--) { solve(); } return 0; }
题目详情 - L2-3 清点代码库 (pintia.cn)
用map记录每个相同功能代码出现的次数,然后再将其赋值到结构体,最后对结构体进行排序并输出即可.
#include <bits/stdc++.h> #define inf 0x3f3f3f3f #define endl '\n' //#define int long long using namespace std; //typedef long long ll; typedef pair<int,int> PII; //queue<PII> q1; map<vector<int>, int > mp; //priority_queue <int,vector<int>,greater<int> > q2; int n,m,t,k; /* */ struct Ans{ int num; vector<int> a; bool operator < (const Ans& s)const{ if(num == s.num) return s.a > a; return num > s.num; } }; vector<Ans> ans; void solve() { cin >> n >> m; for(int i = 0 ; i < n; i++){ vector<int> p; int x; for(int j = 0; j < m; j++){ cin >> x; p.push_back(x); } mp[p]++; } cout << mp.size() << endl; for(auto i : mp){ Ans x; x.num = i.second; x.a = i.first; ans.push_back(x); } sort(ans.begin(), ans.end()); for(auto i : ans){ cout << i.num; for(auto j : i.a){ cout << ' ' << j; } cout << endl; } } signed main() { ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int Ke_scholar = 1; while(Ke_scholar--) { solve(); } return 0; }
题目详情 - L2-4 哲哲打游戏 (pintia.cn)
此题是之前一道一样的题.
也是最后一道.
题解传送门->西南民族大学 春季 2023 训练赛 5 - Ke_scholar - 博客园 (cnblogs.com)