写在前面:这次题目虽然大多数是模拟题且不算难,但是题面其实不算友好,不少同学因为题目描述而错失满分。


A:

题意:给定一个数字串,问每一个前缀串是否是素数。

模拟题不多解释。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
#include<queue>
#include<string>
#include<iostream>using namespace std;
const int MAX = 2e5 + 6;
string s;
bool isprime(int x) {if(x < 2) return 0;for(int i = 2; i*i<=x; i++) {if(x%i == 0) return 0;}return 1;
}
int main()
{cin>>s;int len = s.length();int flag = 1;for(int i = 0; i<len; i++) {cout <<  s.substr(i) ;int x = stoi(s.substr(i));//printf("%d",x);if(isprime(x) == 1) printf(" Yes\n");else {flag = 0;printf(" No\n");}}if(flag == 1) {printf("All Prime!\n");}return 0 ;
} 

B:

题意:n个人玩牌m盘。刚开始桌子上有两张牌,每盘中依次轮每个人出牌,牌放到桌子上,每一盘中这个人不出局当且仅当这个人出的牌桌子上都没有,并且恰好为桌子上某两个牌的数值的差的绝对值。然后按要求输出每一盘出局的人以及最后是否有winner。

题面是真的坑,刚开始在输出格式这里卡了半天,好在最后AC了。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
#include<queue>
#include<string>
#include<iostream>
#include<set>
using namespace std;
const int MAX = 4e5 + 6;int a,b;
int n,m;
int val[102][1003];
int out[102];//是否出局
vector<int> hx;//候选的数字
vector<int> vv;//每一局淘汰的人
bool is[MAX],diff[MAX];
int main()
{cin>>a>>b;cin>>n>>m;for(int i = 1; i<=n; i++) {for(int j = 1; j<=m; j++) {scanf("%d",&val[i][j]);}}is[a]=1;is[b]=1;diff[abs(a-b)]=1;hx.push_back(a);hx.push_back(b);int cnt_out = 0;for(int j = 1; j<=m; j++) {//每一局 vv.clear();for(int i = 1; i<=n; i++) {//每个人 if(out[i] == 1) continue;int now = val[i][j];int jixu = diff[now];if(is[now] == 1) jixu = 0;if(jixu == 1) is[now] = 1;//这里加不加if都能AC,但是题面意思并不清晰。 if(jixu == 0) {cnt_out++;out[i] = 1;vv.push_back(i);continue;}for(int k = 0; k<hx.size(); k++) {diff[abs(hx[k]-now)]=1;}hx.push_back(now);}if(vv.size() > 0) {for(int k = 0; k<vv.size(); k++) {printf("Round #%d: %d is out.\n",j,vv[k]);
//              printf(" %d",vv[k]);}//printf(" is out.\n");}if(cnt_out == n) {printf("No winner.\n");return 0;}}if(cnt_out == n) {printf("No winner.\n");return 0;}printf("Winner(s):");for(int i = 1; i<=n; i++) {if(out[i] == 0) {printf(" %d",i);}}printf("\n");return 0;
}
/*
20 12
2 2
8 4
8 200*/

C:

题意:给一张无向图,相邻点不能是相同颜色,给你m种染色方案,问你每一种是否合法。

经典的染色问题,求解是np的,但是验证解是线性的,水题。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
#include<queue>
#include<string>
#include<iostream>
#include<set>
using namespace std;
const int MAX = 4e5 + 6;
int val[MAX];
int n,r,k,m;
pair<int,int> pr[MAX];
set<int> ss;
int main()
{cin>>n>>r>>k;for(int a,b,i = 1; i<=r; i++) {scanf("%d%d",&a,&b);pr[i].first = a;pr[i].second = b;}cin>>m;for(int i = 1; i<=m; i++) {ss.clear();for(int j = 1; j<=n; j++) {scanf("%d",&val[j]);ss.insert(val[j]);}if(ss.size() > k) {printf("Error: Too many species.\n");}else if(ss.size() < k) {printf("Error: Too few species.\n");}else {int flag = 1;for(int a,b,q = 1; q<=r; q++) {a = pr[q].first;b = pr[q].second;if(val[a] == val[b]) {flag = 0;break;}}if(flag == 1) puts("Yes");else puts("No");}}}
/*
6 8 3
2 1
1 3
4 6
2 5
2 4
5 4
5 6
3 6
5
1 2 3 3 1 2
1 2 3 4 5 6
4 5 6 6 4 5
2 3 4 2 3 4
2 2 2 2 2 2
*/

D:

题意:定义了一种排序方式,让你用这种排序方式把给定的数字进行排序。

做法:拿个set维护窗口内的数就可以了,不难。

注意题面是int范围,也就是代表可以有负数。(是-1e11啊不是1e-11,Orz)

这题刚开始一直T,本来想是不是卡了log,强行让你用并查集进行区间合并,交卷还剩半小时的时候发现是自己写挂了,log是可以过的。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
#include<queue>
#include<string>
#include<iostream>
#include<set>
using namespace std;
typedef long long ll;
const int MAX = 2e5 + 6;
int n,m,ok[MAX];
ll a[MAX];
set<pair<ll,int> > ss;
set<int> ori;
set<int> cur;
vector<ll> vv;
vector<pair<int,ll> > cc;
int f[MAX];
int getf(int v) {return f[v] == v ? v : f[v] = getf(f[v]);
}
int main()
{cin>>n>>m;for(int i = 1; i<=n; i++) scanf("%lld",a+i),f[i]=i,ori.insert(i);int cur_ans = 0;for(int times = 1; times<=n; times++) {ss.clear();vv.clear();cc.clear();pair<ll,int> last = make_pair((ll)-1e11,0);for(set<int>::iterator itt = ori.begin(); itt != ori.end(); ++itt) {int pos = *itt; if(ss.size() < m) {ss.insert(make_pair(a[pos],pos));}if(ss.size() == m) {set<pair<ll,int> >::iterator it = ss.lower_bound(last);if(it == ss.end()) {break;}else {pair<ll,int> now = *it;cc.push_back(now.second);vv.push_back(now.first);ss.erase(it);last = now;}}}set<pair<ll,int> >::iterator it = ss.lower_bound(last);for(;it != ss.end(); ++it) {pair<ll,int> now = *it;cc.push_back(make_pair(now.second,now.first));ok[now.second] = 1;vv.push_back(now.first);//ss.erase(it);last = now;          }int up = vv.size();cur_ans += up;for(int i = 0; i<up; i++) {printf("%lld%c",vv[i],i == up-1 ? '\n' : ' ');}if(cur_ans == n){break;}for(int i = 0; i<cc.size(); i++) {ori.erase(cc[i]);}} return 0;
} 

有不懂的地方欢迎评论一起讨论~


另外,如果你要问我怎么发现的输出格式的问题,那么下面这张图将回答这个问题:

【PAT甲级最新题解】PAT甲级2020.7月春季考试满分题解(附代码)相关推荐

  1. [蓝桥杯]荒岛探测python3满分题解

    [蓝桥杯]荒岛探测python3满分题解 文章目录 [蓝桥杯]荒岛探测python3满分题解 前言 一.思路 二.代码 3. 总结 前言 小白一枚,最近在准备蓝桥杯记录一下满分题解的题目 一.思路 获 ...

  2. PAT甲级1093 Count PAT‘s :[C++题解]DP、状态机模型dp

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:统计子串"PAT"的数量. 状态机模型:本题需要的是PAT,需要选3个字母,对应三条边,需要4个状态. 下面以样例 ...

  3. 【题解PAT】1006 换个格式输出整数

    [题解PAT]1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(< ...

  4. PAT-2022年春季考试 - 甲级题解

    试卷在此 7-1 Simple Lie Detection (20 分) 作者 陈越 单位 浙江大学 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB Lie detection ...

  5. PAT乙级095 解码PAT准考证

    1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: ...

  6. 2020 乐山师范学院新生程序设计大赛题解

    2020 乐山师范学院新生程序设计大赛题解 A 数组求和 中等难度 题目大意: 给定一个数组,执行若干次操作,每次操作可以把两个相邻的数变成相反数,求数组最大的和. 解题思路: 这其实是一个思维题,认 ...

  7. 优学院计算机基础网课答案,最新网课答案2020优学院大学计算机基础

    最新声音依靠( )的振动进行传播. 网课多选(2分) 哲学是( )最新网课答案2020优学院大学计算机基础答案判断(2分) 酒吧公关促销是推销某个具体的产品.( ) 优学院判断(1分) 剩余价值理论是 ...

  8. PAT-2021年春季考试-甲级

    ** PAT-2021年春季考试-甲级 7-3 structure of max-heap ** 对我个人来说,这道题的难点在于没能利用sscanf 以及 cin.get() 函数进行提问内容的读取 ...

  9. 山东科技大学2020年6月1日作业题解

    山东科技大学2020年6月1日作业题解 题目一: STL--灵活的线性表 Description 数组和链表是我们熟知的两种线性结构,但是它们不够灵活(不能同时实现直接插入.删除和访问操作),给你若干 ...

最新文章

  1. 阅读记录:Learning multiple layers of representation(杂乱笔记)
  2. 蓝桥杯python青少年_蓝桥杯大赛青少年组省赛结果公布
  3. C++异常处理(try和catch)
  4. Spring学习总结三
  5. spring-自动加载配置文件\使用属性文件注入
  6. sqlserver 把SELECT结果集中一列的所有的值 用逗号隔开放进一个字段内
  7. java.util.zip.zipexception_android-如何解决java.util.zip.ZipException?
  8. 这篇文章说说特征工程(反欺诈与征信变量)
  9. WPS正式推出了JS宏(WPS宏编辑器)如何切换会传统VB环境
  10. php uchome,【UCHome二次开发】模板解析
  11. 手机识别图片文字的方法
  12. edge 浏览器打开总跳向 hao.360
  13. 提问的艺术,原文链接
  14. 昆冶金计算机高考录取分数线,昆明冶金高等专科学校2020年录取分数线(附2018-2020年分数线)...
  15. C#中的bin和obj文件夹有什么用?
  16. A/Btest (A/B测试)的营销策略效果分析
  17. 「萌新上手Mac」安装软件,步骤超简单
  18. 支持DoH的DNS服务器,Win11 支持私密 DNS-over-HTTPS(DoH) 附启用教程
  19. Python爬虫之豆瓣TOP250爬取
  20. 网页底部版权信息如何注明?

热门文章

  1. HDOJ 1875 畅通工程再续
  2. 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中
  3. [Leetcode][第491题][JAVA][递增子序列][回溯][RK算法]
  4. HDU - 4586 数学期望
  5. mysql数据库持续_MySql数据库--持续记录ing
  6. 广工android嵌入式系统试卷_嵌入式系统考试试题A及答案
  7. npu算力如何计算_CPU、GPU、NPU、FPGA等芯片架构特点分析
  8. java excel类库,jExcelApi Java 操作 Excel 的类库
  9. asm扩容流程_Oracle rac asm 扩容
  10. A20 文件系统预装APK