PAT 2021秋季题解

7-1(11分代码)

#include "bits/stdc++.h"
using namespace std;
struct node
{long long int addr;long long int len;
};
vector<node> v;
map<long long int, int> mp;
int main()
{int n, m;cin >> n >> m;v.resize(n+1);long long int sum = 0;for (size_t i = 1; i <= n; i++){int ad, len;cin >> ad >> len;if (len == 0) continue;sum += len;v[i] = { ad,len };mp[sum] = i;}set<int> s;for (size_t i = 0; i < m; i++){long long int elem;cin >> elem;long long int idx = 0,curSum = 0;bool flag = false;for (auto it : mp) {if (elem < it.first) {idx = it.second;flag = true;s.insert(idx);//cout << idx << endl;break;}curSum = it.first;}//找indexif (flag) {long long int adr = v[idx].addr;long long int len = v[idx].len;printf("%lld\n", adr + ((elem - curSum)%len) * 4);}else cout << "Illegal Access" << endl;}cout << s.size() << endl;return 0;
}

7-2 (AC代码)

#include "bits/stdc++.h"
using namespace std;vector<int> ohat, oweight;
vector<int> shat, sweight;bool cmp(int a, int b)
{return a > b;
}int find(int x,vector<int> v,int flag)
{int res = 0;for (int i = 0; i < v.size(); i++) {if (x == v[i]) {res = i;}}if (flag%2==0) {return res + 1;//找第几大,v是按大到小排好序}else {return v.size() - res;//找第几小}
}int find2(int idx, vector<int> v, int flag)
{if (flag % 2 == 1) idx = v.size() + 1 - idx;for (size_t i = 0; i < v.size(); i++){if (i + 1 == idx) {for (size_t j = 0; j < v.size(); j++){if (v[i] == oweight[j]) return j + 1;}}}
}int main()
{int n;cin >> n;ohat.resize(n);oweight.resize(n);for (size_t i = 0; i < n; i++) cin >> ohat[i];for (size_t i = 0; i < n; i++) cin >> oweight[i];shat = ohat;sweight = oweight;sort(shat.begin(), shat.end(), cmp);sort(sweight.begin(), sweight.end(), cmp);int flag = 0;vector<int> idx;for (int i = n - 1; i >= 0; i--){idx.push_back(find(ohat[i], shat, flag++));}flag = 0;for (size_t i = 0; i < n; i++){int t = idx[i];if (i != 0) cout << " ";cout << find2(t, sweight, flag++);}return 0;
}

7-3 (AC代码)

#include "bits/stdc++.h"
using namespace std;
struct node
{int val;int pri;int index;
};
int n;
vector<int> in;
vector<node>v;
vector<node> ans;
bool cmp(node a, node b)
{if (a.index != b.index) return a.index < b.index;
}bool cmp1(node a, node b)
{if (a.val != b.val) return a.val < b.val;
}void levelOrder(int inL,int inR,int index)
{//find rootif (inL > inR) return;int i = inL;int minPri = 100000;int minIdx = -1;for (size_t i = inL; i < inR; i++){if (v[i].pri < minPri) {minPri = v[i].pri;minIdx = i;}}if (minIdx == -1) return;v[minIdx].index = index;ans.push_back(v[minIdx]);levelOrder(inL, minIdx, 2 * index);levelOrder(minIdx + 1, inR, 2 * index + 1);
}int main()
{cin >> n;for (size_t i = 0; i < n; i++){int val, pri;cin >> val >> pri;v.push_back({ val,pri });}sort(v.begin(), v.end(), cmp1);for (size_t i = 0; i < n; i++){in.push_back(v[i].pri);}levelOrder(0, n, 1);sort(ans.begin(), ans.end(), cmp);for (size_t i = 0; i < ans.size(); i++){if (i != 0) cout << " ";cout << ans[i].val;}cout << endl;for (size_t i = 0; i < ans.size(); i++){if (i != 0) cout << " ";cout << ans[i].pri;}return 0;
}

7-4 (AC代码)

#include "bits/stdc++.h"
using namespace std;
const int MAXV = 105;
int n, m;
vector<int> adj[MAXV];
int maxDp;
bool vis[MAXV] = { false };
bool cmp(int a, int b)
{return a < b;
}
void dfs(int u,int depth)
{bool flag = false;for (size_t i = 0; i < adj[u].size(); i++){int v = adj[u][i];if (!vis[v]) {flag = true;break;}}//printf("cur vis:%d D:%d\n", u, depth);if (!flag) {if (depth > maxDp) {maxDp = depth;return;}}vis[u] = true;for (size_t i = 0; i < adj[u].size(); i++){int v = adj[u][i];if (!vis[v]) {dfs(v, depth + 1);break;}}
}int main()
{cin >> n >> m;for (size_t i = 0; i < m; i++){int a, b;cin >> a >> b;adj[a].push_back(b);adj[b].push_back(a);}for (int i = 1; i <= n; i++) {sort(adj[i].begin(), adj[i].end(), cmp);}int rMaxDp = -1;vector<int> ans;for (size_t i = 1; i <=n ; i++){maxDp = -1;fill(vis, vis + MAXV, false);//cout << i << endl;dfs(i, 1);if (maxDp > rMaxDp) {rMaxDp = maxDp;ans.clear();ans.push_back(i);}else if (maxDp == rMaxDp) {ans.push_back(i);}}cout << ans[0] << " " << rMaxDp << endl;return 0;
}

2021 PAT甲级秋季题解相关推荐

  1. 2019年12月7日PAT甲级满分题解与经验总结

    PAT2019冬季甲级满分代码+占坑经验分享 考题体验 A题 题目+题解 题目 题解 B题 题目+题解 题目 题解 C题 题目+题解 题目 题解 D题 题目+题解 题目 题解 考场体验,ide经验提高 ...

  2. 2019 PAT甲级秋季考试总结

    因为要考研浙大软院,所以考个PAT甲级抵机试是很好的!而且之前天梯赛金奖发了150的代金券,让原价256的考试看起来也没那么贵了~于是很早就报名啦!(但是很后悔3月份那场没报,不然就可以更早轻松一点了 ...

  3. 2019秋季PAT甲级_C++题解

    2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...

  4. 【PAT甲级最新题解】PAT甲级2020.7月春季考试满分题解(附代码)

    写在前面:这次题目虽然大多数是模拟题且不算难,但是题面其实不算友好,不少同学因为题目描述而错失满分. A: 题意:给定一个数字串,问每一个前缀串是否是素数. 模拟题不多解释. #include< ...

  5. 【PAT甲级 - C++题解】1147 Heaps

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  6. 【PAT甲级 - C++题解】1119 Pre- and Post-order Traversals

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  7. 【PAT甲级 - C++题解】1155 Heap Paths

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  8. 【PAT甲级 - C++题解】1104 Sum of Number Segments

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

  9. 【PAT甲级 - C++题解】1095 Cars on Campus

    ✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343

最新文章

  1. pandas高级处理-交叉表与透视表
  2. R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
  3. xmind工具软件(相关)
  4. 【UGV】32版UGV原理图
  5. MiniGUI+qvfb+Eclipse完成嵌入式系统图形开发(开发环境的搭建)
  6. android 打印kernel log,android8.0 kernel4.9.44 各层log打开
  7. 疯狂涨知识!「高并发秒杀」微信抢红包实战案例帮你突破瓶颈
  8. Himly TCC Dubbo 程序示例
  9. java static调用吗_java中使用static
  10. 三十五 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点
  11. thinkpad x200 bios 超级密码破解方法
  12. 读《混世小农民》有感
  13. js html等比例放大后生成图片 html2canvas
  14. 【torch】torch.roll
  15. 图 2021-01-16
  16. 学校运动会广播稿计算机,学校运动会广播稿
  17. 蜘蛛能抓取thinkphp的html页面,搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛来抓取页面...
  18. MS问题汇总小结~(持续更新记录)
  19. HD7刷android2.2全教程
  20. 微信公众号代运营 2022年企业有必要运营公众号吗

热门文章

  1. 全面API接口,淘宝平台数据调取详情
  2. 东软始业教育结业考试 2021.12.30
  3. CSO面对面|对话因陀罗,共话游戏行业安全防护之路
  4. Sobolev空间-广义函数的概念(二)
  5. FB60(F-43)与MIRO的区别
  6. win11关闭自动更新
  7. 2020人工智能服务器排行榜
  8. 抓包工具Fiddler的使用
  9. 重磅来袭,自动化测试APK---傻猴
  10. 电脑的日常使用 0 笔记本电脑验机使用体验帖