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

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


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;	
} 

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

 


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何收缩超大的SharePoint_Config数据库

前言 在已经运行了2年多的SharePoint服务器上&#xff0c;发现SharePoint_Config的数据库文件越来越大&#xff0c;已经达到90几个GB&#xff0c;收缩可以减小20几个GB&#xff0c;但是一周以后又会恢复到90几个GB大小&#xff0c;甚是奇怪。 因为磁盘空间不足&#xff0c;一共…

SharePoint PowerShell命令系列

(1) Backup-SPSite & Restore-SPSite 这两条命令可能是大家最先接触的PowerShell命令了吧, 一个是备份网站集, 另一个是还原网站集. Backup-SPSite 例子 Backup-SPSite http://site_name -Path C:\Backup\site_name.bak 参数 Force: 覆盖现有备份NoSiteLock: 设置备份…

【Processing学习】 - 公交车马路动态绘制

效果图: 汽车动态移动,云彩动态移动,小草没有找到矢量图,百度了一张先用着. float q 0; int s 0; int add 1;PImage p1;void setup() {size(800, 400);background(0, 0, 255);rect(300, 150, 300, 140, 30);//sunfill(255, 255, 0);circle(800, 0, 40);first//circle(360,…

sharepoint 2013 网站集解锁

前言 最近碰到这样的一个问题&#xff0c;就是SharePoint 站点备份&#xff08;Backup-SPSite&#xff09;的时候&#xff0c;速度特别慢&#xff0c;然后网站变成只读状态&#xff08;备份过程中只读属于正常现象&#xff09;。但是&#xff0c;自己手欠把备份命令的PowerShel…

Qt 5.14 安装,windows10系统,64位,详细步骤,非常简单!

下载地址&#xff1a;http://download.qt.io/archive/qt/5.14/5.14.2/ 直接选择windows系统或mac兄或Linux系统对应版本即可。 这里解释一下 Qt 的版本号&#xff0c;比如 5.14.2 是完整的 Qt 库版本号&#xff0c;第一个数字 5 是大版本号&#xff08;major&#xff09;&…

最新的windows xp sp3序列号 xp序列号

最新的windows xp sp3序列号(绝对可通过正版验证) MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用&#xff08;强推此号) QC986-27D34-6M3TY-JJXP9-TBGMD(台湾交大学生版) 可用 CM3HY-26VYW-6JRYC-X66GX-JVY2D 可用 DP7CM-PD6MC-6BKXT-M8JJ6-RPXGJ 可用 F4297-RCWJP-P482C-YY23Y…

2023年12月16日~12月22日(自适应反馈机制下基于卷积神经网络的高清晰反射波反演算法:CNN-RWI)

标题&#xff1a;Adaptive Feedback Convolutional-Neural-Network-Based High-Resolution Reflection-Waveform Inversion 全波形反演&#xff08;FWI&#xff09;是一种非线性拟合观测地震记录从而获得高清晰速度模型的最优化算法。FWI能够通过拟合浅层初至波和反射波获得较准…

C++语言 如何用G++进行编译和运行程序

在windows下&#xff0c;我们写C程序一般会有如下几个步骤&#xff1a; 编写.cpp文件&#xff0c;代码都在里面&#xff1b;可能还有一些.h文件之类的支持文件&#xff0c;这些文件一般都会放在一起&#xff0c;或者相对位置是固定的&#xff1b;编译文件&#xff0c;链接文件…

SharePoint 2016文档库所在数据库表的说明(文档库数据库)

突然被客户问一个问题&#xff0c;说数据库存在哪一个表&#xff0c;这个原本是开发的事&#xff0c;竟然文档我了&#xff0c;好吧这里记录一下&#xff0c;以便记忆给客户汇报。 SharePoint 数据库表说明&#xff1a; FeaturesTable that holds information about all the …

C++模板类嵌套类内部类局部类的区别

模板类就是将类定义成模板的形式。 C中好像不区分内部类与嵌套类两个名词。 内部类与嵌套类都是指在类中定义类。 局部类是指在函数中定义类。 &#xff08;c不能在函数中定义函数(python可以)。c在类中定义的函数也就是成员函数。&#xff09; &#xff08;c内部类与java内…

为sharepoint 2013 增加切换账户登陆菜单

SharePoint 2010是有一个用户切换功能的&#xff0c;不知为何2013中&#xff0c;将这个优秀的功能取消了&#xff0c;使用如下可以重回辉煌 修改sharepoint 服务器上下面路径中的Welcome.ascx文件&#xff1a; C:\Program Files\Common Files\Microsoft Shared\Web Server Ext…

C++ 异常,标准异常类,自定义异常类,throw,try,catch语句

要学习异常&#xff0c;首先就要学习throw和try,catch语句&#xff1a; C中try catch语句用法有非常灵活&#xff0c;有许多种组合&#xff1b; 这里简单介绍以下最基本的用法&#xff1b; 1. 格式 try{ ... } catch{ ... } try语句块是用来判断是否有异常&#xff1b; c…

SharePoint 2013 RBS(Remote BLOB Storag) 安装、部署、垃圾回收

SharePoint 承担着文件管理的工作&#xff0c;默认都是将它们以BLOB的数据形式存储在内容数据库当中&#xff1b;当文件大时&#xff0c;就很容易导致数据库容量被这些BLOB数据所快速消耗&#xff0c;而且频繁地对这些大数据量的BLOB数据进行读写访问&#xff0c;很容易在SQL端…

Processing 闪烁的圆 动画效果

打开Processing,CtrlR运行. 运行效果 : class myRect {float x,y;float r,a;//banjing secai bianhua myRect(float x, float y, float r,float a) {this.x x;this.y y;this.r r;this.a a;}void chang(){this.a 0.02;} void display() {stroke(255);fill(120-120*cos(a…

用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?

python 类中一定需要有 __init __方法么&#xff1f;没有的会怎样&#xff1f; 在回答这个问题之前&#xff0c;先说两个问题&#xff1a;① 面向对象编程&#xff1f; ② 什么是类&#xff1f; 面向对象&#xff0c;先上一个正式点的解释&#xff1a; “把一组数据结构和处…

了解 SharePoint 2010 开发中的关键设计决定

在开发项目时&#xff0c;我们经常用到SVN.但是有时候&#xff0c;只知道把源码放到trunk , 把一些文档放到Document下面。其它的目录都应该放什么东西&#xff0c;应该怎么用。可能都有点模糊。 Branch 目录 &#xff1a; 跟工程项目相关的各个工程版本分支。该目录下面的版…

C++,string类的指针,string类数组的指针 string *s

可以这样&#xff1a; #include<iostream> #include<string> using namespace std;int main(void) {string s "hello";//定义一个char类型指针&#xff0c;把string s的首元素地址赋给pt,则pt指向字符串s.char *pt &s[0]; cout << pt <&…

了解 SharePoint 2010 开发中的关键点

**摘要&#xff1a;**了解为 Microsoft SharePoint 2010 规划和开发业务解决方案时必须做出的关键点。 上次修改时间&#xff1a; 2012年3月13日 适用范围&#xff1a; Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Fo…

C++自定义迭代器模板,实现ArrayList基本操作,自定义迭代器遍历

运用到的知识&#xff1a;&#xff08;不分先后&#xff09; 模板&#xff0c;类&#xff0c;循环数组&#xff0c;线性表&#xff0c;指针&#xff0c;异常&#xff0c;迭代器&#xff0c;输入输出等C基础 #include<iterator> #include<iostream> #include<v…

SharePoint2013 2019性能及限制

适用于&#xff1a;2013 2019 SharePoint Online 本文档介绍 SharePoint Server 2013 的软件边界和限制。其中包括&#xff1a; 边界&#xff1a; 根据设计无法超过的静态限制 阈值&#xff1a; 为满足特定要求而能够超过的可配置限制 支持的限制&#xff1a; 已默认设置为…