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冬季考试题解的更多相关文章

  1. PAT甲级 链表题_C++题解

    链表处理 PAT (Advanced Level) Practice 链表题 目录 <算法笔记> 重点摘要:静态链表 1032 Sharing (25) 1052 Linked List ...

  2. PAT甲级 模拟题_C++题解

    模拟题 PAT (Advanced Level) Practice 模拟题 目录 1008 Elevator (20) 1042 Shuffling Machine (20) 1046 Shortes ...

  3. PAT甲级 排序题_C++题解

    排序题 PAT (Advanced Level) Practice 排序题 目录 <算法笔记> 6.9.6 sort()用法 <算法笔记> 4.1 排序题步骤 1012 The ...

  4. PAT甲级满分攻略|记一次考试经历

    一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...

  5. 2019秋季PAT甲级_备考总结

    2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...

  6. PAT-2019年冬季考试-乙级(题解)

    很荣幸这次能够参加乙级考试,和大佬们同台竞技了一次,这篇博客,进行介绍这次2019冬季的乙级考试题解. 7-1 2019数列 (15分) 把 2019 各个数位上的数字 2.0.1.9 作为一个数列的 ...

  7. PAT甲级题解(慢慢刷中)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  8. PAT甲级考前整理(2019年3月备考)之三,持续更新中.....

    PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...

  9. PAT甲级考前整理(2019年3月备考)之一

       转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...

随机推荐

  1. 浏览器渲染页面原理,reflow、repaint及其优化

    浏览器的主要组件包括: 1.      用户界面 - 包括地址栏.前进/后退按钮.书签菜单等.除了浏览器主窗口显示的你请求的页面外,其他显示的各个部分都属于用户界面. 2.      浏览器引擎 - ...

  2. 3.CRUD(增删改查)

    Select 选择,查询语句 id:就是对应的namespace中的方法名: resultType:Sql语句执行的返回值: parameterType:参数类型 我们想使用查询语句首先要在UserM ...

  3. Jmeter 测试结果分析之聚合报告简介

    聚合报告(aggregate report) 对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量. 吞吐量是以取样目标点 ...

  4. 洛谷 P2058 海港(模拟)

    题目链接:https://www.luogu.com.cn/problem/P2058 这是一道用手写队列模拟的一道题,没有什么细节,只是注意因为数不会很大,所以直接用数作为数组下标即可,不用用map ...

  5. 6、Java运算符

    运算符的分类 算数运算符 二元运算符 算术运算符中 = - * / % 属于二元运算符,二元运算符指的是需要两个操作数才能完成的运算的运算术. 整数运算规则 1.如果两个操作数有一个为Long,则结果 ...

  6. STM32程序中 \r \n \r\n

    1.用串口调试助手打印信息,程序换行时,最好还是用\r\n,光用\r或光用\n可能达不到换行的效果.

  7. js开关菜单

    开关菜单 /* 将需要的信息添加到类的静态数组里备用 设置一个值openBool,默认为false:菜单默认display为none 点击时,如果目标元素是子元素,则不做开关菜单操作,直接return ...

  8. PS——牛奶字

    一.新建800*600像素的背景,设置前景色到透明渐变(黑到白),线性渐变,从上到下画一条直线 二.用矩形选框工具在背景上方1/2位置画一个矩形,Ctrl+Delete填充颜色 三.输入文字,设置图层 ...

  9. RTT学习之RTC设备

    RTC: 目前系统内只允许存在一个 RTC 设备,且名称为 "rtc",所以不用查找设备 启用 Soft RTC (软件模拟 RTC),对无硬件RTC 启用 NTP 时间自动同步, ...

  10. python匿名函数与三元运算

      匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda ...