第二次比赛出题题解
第二次比赛题解
P1138 第 k 小整数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
主要了解set的用法,set会自动去重和排序
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n,k; cin >> n >> k; set<int> s; for(int i = 0, x ;i < n;i ++){ cin >> x; s.insert(x); } if(k > s.size()) cout << "NO RESULT" << endl; else{ for(auto i : s){ k--; if(k == 0){ cout << i << endl; break; } } } return 0; }
P9044 Koszulki - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
其实就是从大到小排个序之后看第k个人和后面是不是一样的,我这里从小到大排序,从后遍历也是一样的
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n,k; cin >> n >> k ; vector<int> a(n); for(auto &i : a) cin >> i; sort(a.begin(),a.end()); int ans = 0; for(int i = n - k - 1;i >= 0;i --){ if(a[i] == a[i + 1]) ans ++; else break; } cout << ans + k << endl; return 0; }
P2788 数学1(math1)- 加减算式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
每一项都保证是非负数,就不用考虑第一个数的正负性,其余跟着模拟就行
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> s; int ans = 0; char op = '?'; for(int i = 0;i < s.size();i ++){ int num = 0; while(s[i] >= '0' && s[i] <= '9'){ num = num * 10 + s[i] - '0'; i++; } if(op == '-') ans -= num; else ans += num; op = s[i]; } cout << ans << endl; return 0; }
P2084 进制转换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
注意+号的判断
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; string s; cin >> n >> s; int one = 0; for(int i = 0;i < s.size();i ++) if(s[i] != '0') one ++; for(int i = 0;i < s.size();i ++){ if(s[i] != '0'){ cout << s[i] << '*' << n << '^' << s.size() - i - 1; one--; if(one > 0) cout << '+'; } } return 0; }
B3642 二叉树的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
作业题的一个变型题,也怪我,当时鼠标没电了,只是用白板来展示这个遍历不好理解
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; struct Node{ int root; int left,right; }; vector<Node> tree(N); void traversal1(int x){ if(x == 0 ) return; cout << x << ' '; traversal1(tree[x].left); traversal1(tree[x].right); }; void traversal2(int x){ if(x == 0) return; traversal2(tree[x].left); cout << x << ' '; traversal2(tree[x].right); }; void traversal3(int x){ if(x == 0) return; traversal3(tree[x].left); traversal3(tree[x].right); cout << x << ' '; }; int main() { int n; cin >> n; for(int i = 1;i <= n;i ++){ int x,y; cin >> x >> y ; tree[i].left = x; tree[i].right = y; tree[x].root = tree[y].root = i; } traversal1(1); cout << endl; traversal2(1); cout << endl; traversal3(1); return 0; }
B2001 入门测试题目 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
签到题,注意开long long
#include <bits/stdc++.h> using namespace std; int main() { long long a,b; cin >> a >> b; cout << a + b << endl; return 0; }
本文作者:Ke_scholar
本文链接:https://www.cnblogs.com/Kescholar/p/17574000.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
SMU2023训练记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步