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道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...
随机推荐
- EVE无法安装vim
有些时候,由于一些错误的操作,可能导致vim无法使用,例如如下情况: root@eve-ng:~# vim /etc/profile-bash: vim: command not found 此时,一 ...
- python的logging库
logging库 简介 logging库提供日志打印功能. 值得一提的是,不仅能打印到日志文件,还能打印到控制台. 日志级别 logging一共分为5个级别,从低到高依次为: DEBUG<IN ...
- Go非缓冲/缓冲/双向/单向通道
1. 非缓冲和缓冲 package main import ( "fmt" "strconv" ) func main() { /* 非缓冲通道:make(ch ...
- DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL 未能在“xmlhttpRequest”上执行“open”:无效的URL。
出现这个报错主要是baseurl:http://192.168.*.*/后面的(/)或是请求里面的url:/user/login中前面的(/)有一个漏掉了,导致合成的路径不完整,所以报错:无效的URL
- 毕向东java基础总结
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- jquery 获取 父级 iframe 里的控件对象
window.parent.document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('id')
- 用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)
(软件环境) 『系统』Windows 10 x64 『JAVA』JDK 1.8.0_91 『Eclipse』 Eclipse-oxygen 『Maven』 apache-maven-3.6.3 『Je ...
- Tomcat 和 JVM 性能调优总结
Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...
- 删除设备和驱动器中的PPS、百度云、360云盘图标
1.win+R,regedit打开注册表 2.找到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyCom ...
- Codeforces Round #622 (Div. 2) A. Fast Food Restaurant
Tired of boring office work, Denis decided to open a fast food restaurant. On the first day he made ...