PAT甲级2019冬季考试题解
A Good In C
纯模拟题,用string数组读入数据,注意单词数量的判断
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
string a[][];
int main () {
for (int i=;i<=;i++) {
for (int j=;j<=;j++)
cin>>a[i][j];
}
string t;
getchar ();
getline (cin,t);
string s[];
int top=;
for (int i=;i<t.length();i++) {
if (t[i]>='A'&&t[i]<='Z') s[top]+=t[i];
else if (t[i-]>='A'&&t[i-]<='Z') top++;
}
if (top!=&&!(t[t.length()-]>='A'&&t[t.length()-]<='Z')) top--;
for (int k=;k<=top;k++) {
for (int j=;j<=;j++) {
for (int i=;i<s[k].length();i++) {
if (i!=) printf (" ");
cout<<a[s[k][i]-'A'+][j];
}
cout<<endl;
}
//for (int j=1;j<=7;j++)
if (k!=top) printf ("\n");
}
//printf ("\n");
return ;
}
B Block Reversing
链表常规题,用结构体静态建立链表,有两个注意点:1、给出的结点里会有无关结点。2、链表里的元素个数能不能整除k要分开判断。
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct node {
int address;
int data;
int next;
}Node[maxn];
int main () {
int head,N,K;
scanf ("%d %d %d",&head,&N,&K);
int address,data,next;
for (int i=;i<N;i++) {
scanf ("%05d %d %05d",&address,&data,&next);
Node[address].address=address;
Node[address].data=data;
Node[address].next=next;
}
vector<node> vi;
while (head!=-) {
vi.push_back(Node[head]);
head=Node[head].next;
}
vector<int> vp[];
if (vi.size()%K!=) {
printf ("%05d %d ",vi[vi.size()/K*K].address,vi[vi.size()/K*K].data);
for (int i=vi.size()/K*K+;i<vi.size();i++)
printf ("%05d\n%05d %d ",vi[i].address,vi[i].address,vi[i].data);
for (int i=vi.size()/K;i>;i--) {
for (int j=(i-)*K;j<i*K;j++)
printf ("%05d\n%05d %d ",vi[j].address,vi[j].address,vi[j].data);
}
printf ("-1");
}
else {
printf ("%05d %d ",vi[vi.size()-K].address,vi[vi.size()-K].data);
for (int i=vi.size()/K;i>;i--) {
int flag=;
if (i==vi.size()/K) flag=;
for (int j=(i-)*K+flag;j<i*K;j++)
printf ("%05d\n%05d %d ",vi[j].address,vi[j].address,vi[j].data);
}
printf ("-1");
}
return ;
}
C Summit
个人认为全场最简单的一题,也是第一道ac的题目,就是图论,根据题意暴力做即可~
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int inf=1e9;
int g[maxn][maxn];
int N,M,K,L,a[maxn];
void init () {
for (int i=;i<=N;i++)
for (int j=;j<=N;j++)
g[i][j]=inf;
}
int main () {
scanf ("%d %d",&N,&M);
int u,v;
init ();
for (int i=;i<M;i++) {
scanf ("%d %d",&u,&v);
g[u][v]=g[v][u]=;
}
scanf ("%d",&K);
for (int i=;i<K;i++) {
int flag1=,flag2=,hash1[maxn]={};
scanf ("%d",&L);
for (int j=;j<L;j++) {
scanf ("%d",&a[j]);
hash1[a[j]]=;
}
for (int j=;j<L;j++) {
for (int k=j+;k<L;k++) {
if (g[a[j]][a[k]]==inf) {
flag1=;break;
}
}
if (flag1==) break;
}
if (flag1==) {
printf ("Area %d needs help.\n",i+);
continue;
}
int u;
for (int j=;j<=N;j++) {
if (hash1[j]==) {
int flag3=;
for (int k=;k<L;k++)
if (g[a[k]][j]==inf) flag3++;
if (flag3==) {
u=j;
flag2=;
break;
}
}
if (flag2==) break;
}
if (flag1==&&flag2==) {
printf ("Area %d may invite more people, such as %d.\n",i+,u);
}
else if (flag1==&&flag2==) {
printf ("Area %d is OK.\n",i+);
}
}
return ;
}
D Cartesian Tree
一开始以为是堆的算法,写了很久,其实并不是。一颗树,结点数据符合小顶堆的规则,给出它的中序遍历,要求输出层序。解决方法是先找出给定序列里最小的点作为根结点,再以根节点为标志,找根节点左边和右边各自最小的结点,作为根节点的左右子树,递归处理。
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct node {
int data;
node * left;
node * right;
};
int a[maxn];
node * create (int inL,int inR,int inRoot) {
if (inRoot==1e9) return NULL;
node * root=new node;
root->data=a[inRoot];
int inLeft=1e9,inRight=1e9;
int min=1e9;
for (int i=inL;i<inRoot;i++) {
if (a[i]<min) {
min=a[i];
inLeft=i;
}
}
root->left=create (inL,inRoot-,inLeft);
min=1e9;
for (int i=inRoot+;i<=inR;i++) {
if (a[i]<min) {
min=a[i];
inRight=i;
}
}
root->right=create (inRoot+,inR,inRight);
return root;
}
void bfs (node * root) {
queue<node *> q;
q.push(root);
while (!q.empty()) {
node * now=q.front();
q.pop();
if (now!=root) printf (" ");
printf ("%d",now->data);
if (now->left) q.push(now->left);
if (now->right) q.push(now->right);
}
}
int main () {
int N;
scanf ("%d",&N);
for (int i=;i<=N;i++) {
scanf ("%d",&a[i]);
}
int min=1e9,inRoot=-;
for (int i=;i<=N;i++) {
if (a[i]<min) {
min=a[i];
inRoot=i;
}
}
//printf ("%d\n",inRoot);
node * root=create (,N,inRoot);
bfs (root);
return ;
}
PAT甲级2019冬季考试题解的更多相关文章
- PAT甲级 链表题_C++题解
链表处理 PAT (Advanced Level) Practice 链表题 目录 <算法笔记> 重点摘要:静态链表 1032 Sharing (25) 1052 Linked List ...
- PAT甲级 模拟题_C++题解
模拟题 PAT (Advanced Level) Practice 模拟题 目录 1008 Elevator (20) 1042 Shuffling Machine (20) 1046 Shortes ...
- PAT甲级 排序题_C++题解
排序题 PAT (Advanced Level) Practice 排序题 目录 <算法笔记> 6.9.6 sort()用法 <算法笔记> 4.1 排序题步骤 1012 The ...
- PAT甲级满分攻略|记一次考试经历
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...
- 2019秋季PAT甲级_备考总结
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...
- PAT-2019年冬季考试-乙级(题解)
很荣幸这次能够参加乙级考试,和大佬们同台竞技了一次,这篇博客,进行介绍这次2019冬季的乙级考试题解. 7-1 2019数列 (15分) 把 2019 各个数位上的数字 2.0.1.9 作为一个数列的 ...
- PAT甲级题解(慢慢刷中)
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...
- PAT甲级考前整理(2019年3月备考)之一
转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...
随机推荐
- 《macOS 使用手册》之远程控制
https://support.apple.com/zh-cn/guide/mac-help/mchlp1066/mac 选择版本: macOS Catalina 10.15 macOS Mojave ...
- qq音乐解析API
文档:www.tjit.net 开放的接口:api88.net 个人代码: input2(event){ //将字符转化为encodeURL编码,才能进行正确请求,这是这个接口要求的 //js自带的转 ...
- eclipse链接mySQL数据库常见错误
1错误: 解决: 2,用户名输入错误 解决:查看自己的正确用户名https://zhidao.baidu.com/question/248308313.html 3. 解决: 链接示例:https:/ ...
- yii2.0 验证码
首先我们在控制器里创建一个actions方法,用于使用yii\captcha\CaptchaAction <?php namespace app\controllers; use YII; us ...
- jquery Ajax标准规范写法
$.ajax({ url:"http://www.xxx",//请求的url地址 dataType:"json",//返回的格式为json async:true ...
- linux查看公网ip的方法
curl ifconfig.me 或者 curl cip.cc
- Booth算法: 补码一位乘法公式推导与解析
以下讲解内容出自<计算机组成原理(第三版)>(清华大学出版社) 大二学生一只,我的计组老师比较划水,不讲公式推导,所以最近自己研究了下Booth算法的公式推导,希望能让同样在研究Booth ...
- Windows事件ID
51 Windows 无法找到网络路径.请确认网络路径正确并且目标计算机不忙或已关闭.如果 Windows 仍然无法找到网络路径,请与网络管理员联系. 52 由于网络上有重名,没有连接.请到“控制面板 ...
- 使用Vue时localhost:8080中localhost换成ip地址后无法显示页面的问题
解决办法是:在package.json中 然后重新启动服务器 npm run dev 就正常显示了.
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 高级索引
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print (y) import n ...