当前位置: 首页 > news >正文

vp 2024夏季PAT甲级

前言

95分钟AK,到处写bug。

题目总览

8f2d69958f991ec9bf76fbc4785bf185
2a3d2b50e25350c27e02929fec283302
b69e22c9a3f624f79446afc6c6de3917

题目细览

第1题 A-1 Intersection Set of Prime Factors

image

思路

先计算n的所有质因子,枚举i, j交换位置,每次都计算当前n的所有质因子,将这两个集合取交集,每次打擂台求最大值即可。

我的AC代码

#include <bits/stdc++.h>constexpr int inf = 2E9;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n;std::cin >> n;std::string sn = std::to_string(n);int max = 0, ans = inf;auto get = [&](int x) {std::vector<int> res;for (int i = 2; i <= x / i; i++) {while (x % i == 0) {res.push_back(i);x /= i;}}if (x != 1) {res.push_back(x);x = 1;}std::sort(res.begin(), res.end());res.erase(std::unique(res.begin(), res.end()), res.end());return res;};auto set1 = get(n);for (int i = 0; i < sn.size(); i++) {for (int j = i + 1; j < sn.size(); j++) {if (sn[i] == sn[j]) {continue;}std::string t = sn;std::swap(t[i], t[j]);int tmp = std::stoi(t);auto set2 = get(tmp);std::vector<int> set3;std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), std::back_inserter(set3));if (set3.size() > max || (set3.size() == max && tmp < ans)) {max = set3.size();ans = tmp;}}}std::cout << max << " " << ans << "\n";return 0;
}

第2题 A-2 Finding the Owner

image

思路

模拟check一下即可,这一场最简单的一题了。

我的AC代码

#include <bits/stdc++.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);std::string s;std::cin >> s;int n;std::cin >> n;std::vector<std::string> t(n);for (int i = 0; i < n; i++) {std::cin >> t[i];}auto check = [&](const std::string & x) {if (s[7] != x[7] || s[8] != x[8]) {return false;}if (s[9] != x[4]) {return false;}if (s[10] != x[17]) {return false;}return true;};std::string ans;for (int i = 0; i < n; i++) {if (check(t[i])) {ans = t[i];}}std::cout << ans << "\n";return 0;
}

第3题 A-3 Dominant Set

image

思路

对于给定的一组集合,我们开一个vis数组用于记录是否访问过,将集合内的节点都放进队列,标记这些节点被访问,每次取出队头元素u,枚举它的所有出边节点v,标记一下v被访问。最后判断是否所有节点都被访问了,如果是输出yes否则输出no。

我的AC代码

#include <bits/stdc++.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n, m;std::cin >> n >> m;std::vector<std::vector<int>> adj(n + 1);for (int i = 0; i < m; i++) {int u, v;std::cin >> u >> v;adj[u].push_back(v);adj[v].push_back(u);}int K;std::cin >> K;for (int ki = 0; ki < K; ki++) {int k;std::cin >> k;std::vector<int> a(k);for (int i = 0; i < k; i++) {std::cin >> a[i];}std::vector<bool> vis(n + 1);std::queue<int> q;for (int i = 0; i < k; i++) {q.push(a[i]);vis[a[i]] = true;}while (q.size()) {auto u = q.front();q.pop();for (const auto& v : adj[u]) {if (vis[v]) {continue;}vis[v] = true;}}bool isok = true;for (int i = 1; i <= n; i++) {if (!vis[i]) {isok = false;break;}}std::cout << (isok ? "yes\n" : "no\n");}return 0;
}

第4题 A-4 Is It A Tree

image

思路

由于可能存在有重边(无自环),所以读入结束后需要去重(先排序再去重),如果边数不等于n - 1,或者入度为0的节点数量不等于1,或者无法通过根节点(唯一的那个入度为0的节点)遍历所有节点,都不是一棵树,输出no和入度为0的节点数量,否则输出yes和根节点编号。

我的AC代码

#include <bits/stdc++.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n;std::cin >> n;std::vector<std::vector<int>> adj(n + 1);std::vector<std::array<int, 2>> edges;int u, v;while (std::cin >> u) {if (u == 0) {break;}std::cin >> v;adj[u].push_back(v);edges.push_back({u, v});}for (int i = 1; i <= n; i++) {std::sort(adj[i].begin(), adj[i].end());adj[i].erase(std::unique(adj[i].begin(), adj[i].end()), adj[i].end());}std::sort(edges.begin(), edges.end());edges.erase(std::unique(edges.begin(), edges.end()), edges.end());std::vector<int> ind(n + 1);for (int u = 1; u <= n; u++) {for (const auto& v : adj[u]) {ind[v]++;}}int cnt = std::count(ind.begin() + 1, ind.end(), 0);if (edges.size() != n - 1 || cnt != 1) {std::cout << "no " << cnt << "\n";} else {int rt = 1;for (int i = 1; i <= n; i++) {if (ind[i] == 0) {rt = i;break;}}std::vector<int> vis(n + 1);std::queue<int> q;q.push(rt);vis[rt] = true;while (q.size()) {auto u = q.front();q.pop();for (const auto& v : adj[u]) {if (vis[v]) {continue;}vis[v] = true;q.push(v);}}bool isok = true;for (int i = 1; i <= n; i++) {if (!vis[i]) {isok = false;break;}}if (!isok) {std::cout << "no " << cnt << "\n";} else {std::cout << "yes " << rt << "\n";}}return 0;
}
http://www.jsqmd.com/news/435327/

相关文章:

  • 2026年知名的仿石砖 品牌推荐:通体仿石砖/仿石石英砖/仿石材路面砖品牌厂商推荐(更新) - 行业平台推荐
  • 镍钛合金丝哪家强?深度测评5家头部供应商,揭秘高端制造核心材料选型逻辑 - 深度智识库
  • 7.1 强化学习(Reinforcement learning,RL)概述
  • XGBoost GPU加速超快
  • 2026年比较好的蓄热石墨烯纺织品 品牌推荐:超轻石墨烯纺织品/烫金烫银石墨烯纺织品厂家专业度参考(精选) - 行业平台推荐
  • 如何修改图片的创建时间和修改时间日期
  • 濮阳AI搜索优化公司性价比怎么样,费用多少钱 - mypinpai
  • 钽丝怎么选?一文读懂纯度/精度/合规性要求及5家靠谱供应商 - 深度智识库
  • 苏州飞贺纺织靠谱吗,贸易商选购它的产品费用高不高? - mypinpai
  • 斜板填料选购终极指南:从材质到工艺,如何甄别真正的品质厂家? - 品牌推荐大师
  • 如何为爱宠选择?徐汇宠物耳道内窥镜检查机构一览,狗狗耳道内窥镜检查/猫咪体检/狗狗隐睾绝育,宠物耳道内窥镜检查专家哪家好 - 品牌推荐师
  • 如何更改文档时间格式?文档时间格式更改步骤
  • 2026年口碑好的西安保护装置 厂家推荐:防逆流保护装置/防孤岛保护装置用户口碑认可厂家 - 行业平台推荐
  • 螺杆泵系统品牌推荐杭州兴龙泵业核心优势解析:三螺杆泵/双螺杆泵/单螺杆泵/螺杆泵系统/切碎机/选择指南 - 优质品牌商家
  • 蓝桥/15/B.1/好数
  • 新乡家装公司哪家口碑好,派轩装饰靠谱排名如何 - 工业品网
  • 东北靠谱的游乐坦克服务厂商有哪些,价格贵吗? - 工业品网
  • 2026年靠谱的单法兰压力变送器 品牌推荐:双法兰压力变送器/设备级压力变送器靠谱厂家盘点 - 行业平台推荐
  • 格式总出错?AI论文平台 千笔写作工具 VS 万方智搜AI,继续教育写作者首选!
  • 说说单工位真空清洗机优质生产商,宁波博尔创新靠谱不? - 工业品牌热点
  • 瑞祥商联卡回收选京回收还是猎卡回收? - 京回收小程序
  • 2026年优质牛肉源头厂家盘点,品质之选不容错过,鲜牛肉/牛肉/天祝白牦牛肉/白牦牛肉/白牦牛/新鲜牛肉,牛肉厂家怎么选 - 品牌推荐师
  • 2026年镍钛合金丝厂家Top5推荐:医疗、航空航天与工业自动化场景适配指南 - 深度智识库
  • 2026年评价高的流延膜清机料 品牌推荐:昆山螺杆清机料/昆山高温螺杆清机料高评分品牌推荐(畅销) - 行业平台推荐
  • 破解弓网监测难题:动车组受电弓视频监控系统助力机务高效巡检
  • 2026年评价高的服装展柜 品牌推荐:眼镜展柜/连锁店展柜厂家真实测评 - 行业平台推荐
  • 国内镍钛合金丝/钽丝/钨棒/钽箔/镍箔生产厂家哪家强?2026年最新实力推荐 - 深度智识库
  • 文档的修改时间是指什么时候?文档修改时间与创建时间区别
  • 2026年2月找保温结构一体板厂家,这几家不能错过,保温装饰一体板/岩棉板/保温结构一体板,保温结构一体板公司推荐 - 品牌推荐师
  • 2026年比较好的多孔平衡节流式流量计 品牌推荐:西安楔形节流式流量计/一体化孔板节流式流量计品牌厂商推荐(更新) - 行业平台推荐