PAT(甲级)2017年秋季考试
PAT(甲级)2017年秋季考试
D题红黑树待补21/30
大佬的代码,看着想哭,这才是艺术啊
A Cut Integer
模拟题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int getLen(ll x){
int len = 0;
while(x){
len++;
x/=10;
}
return len;
}
int main(){
cin>>n;
while(n--){
ll x;
cin>>x;
int len = getLen(x);
ll temp = x;
int t = 0;
ll right = 0;
ll rightTemp = 0;
ll left = 0;
while(t<len/2){
rightTemp = rightTemp * 10 + temp%10;
temp/=10;
t++;
}
while(rightTemp){
right = right * 10 + rightTemp%10;
rightTemp/=10;
}
left = temp;
if(left == 0 || right == 0){
puts("No");
}else{
if(x%(left*right) == 0) puts("Yes");
else puts("No");
}
}
return 0;
}
B Splitting A Linked List
链表题
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1010;
const int maxm = 100000;
struct node{
int address;
int data;
int next;
}nod[maxm];
vector<node> vec;
vector<node> ans;
int Head,n,k;
int vis[maxm];
int main(){
cin>>Head>>n>>k;
for(int i=1;i<=n;i++){
int add,dat,nex;
cin>>add>>dat>>nex;
nod[add].address = add;
nod[add].data = dat;
nod[add].next = nex;
}
for(int head = Head;head!=-1;head=nod[head].next){
vec.push_back(nod[head]);
}
for(int i=0;i<vec.size();i++){
if(vec[i].data < 0 && !vis[vec[i].address]){
ans.push_back(vec[i]);
vis[vec[i].address] = 1;
}
}
for(int i=0;i<vec.size();i++){
if(vec[i].data >= 0 && vec[i].data <= k && !vis[vec[i].address]){
ans.push_back(vec[i]);
vis[vec[i].address] = 1;
}
}
for(int i=0;i<vec.size();i++){
if(!vis[vec[i].address]){
ans.push_back(vec[i]);
vis[vec[i].address] = 1;
}
}
if(ans.size() == 1){
printf("%05d %d -1",ans[0].address,ans[0].data);
return 0;
}
for(int i=0;i<ans.size()-1;i++){
printf("%05d %d %05d\n",ans[i].address,ans[i].data,ans[i+1].address);
}
if(ans.size() > 1) printf("%05d %d -1",ans[ans.size()-1].address,ans[ans.size()-1].data);
return 0;
}
C Vertex Cover
简单图论,最小覆盖,邻接表存图
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10000;
int n,m,k;
int g[maxn][maxn];
int vis[maxn][maxn];
vector<int> vec;
void init(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
vis[i][j] = 0;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int u,v;
cin>>u>>v;
g[u][v] = 1;
g[v][u] = 1;
}
cin>>k;
for(int t=0;t<k;t++){
init();
int nv;
cin>>nv;
for(int i=0;i<nv;i++) {
int d;
cin>>d;
vec.push_back(d);
}
for(int i=0;i<=nv-1;i++){
for(int j=0;j<n;j++){
if(g[vec[i]][j] == 1){
vis[vec[i]][j] = 1;
vis[j][vec[i]] = 1;
}
}
}
bool flag = true;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(g[i][j] == 1 && (vis[i][j] == 0 || vis[j][i] == 0)){
flag = false;
break;
}
}
if(flag == false) break;
}
if(flag) puts("Yes");
else puts("No");
vec.clear();
}
return 0;
}
D Is It A Red-Black Tree
判断是否红黑树 21分/30分 待补
#include<bits/stdc++.h>
using namespace std;
/*
21分
*/
const int maxn = 1010;
int k,n;
int pre[maxn];
int rb[maxn];
int xb[maxn];
//bool childFlag = true;
struct node{
int v;
int cnt;
node *l;
node *r;
};
void insert(node *root,int pos){
if(root == NULL) return;
if(rb[pos] == 0){
root->cnt++;
}
if(root->v > pre[pos]){
if(root->l == NULL){
root->l = new node();
root->l->v = pre[pos];
root->l->l = NULL;
root->l->r = NULL;
if(rb[pos] == 0) root->l->cnt = 1;
}else{
insert(root->l,pos);
}
}else{
if(root->r == NULL){
root->r = new node();
root->r->v = pre[pos];
root->r->l = NULL;
root->r->r = NULL;
if(rb[pos] == 0) root->r->cnt = 1;
}else{
insert(root->r,pos);
}
}
}
bool checkChild(node *Root){
if(Root->l){
if(rb[Root->v] < 0 && rb[Root->l->v] <0){
return false;
}else{
return checkChild(Root->l);
}
}
if(Root->r){
if(rb[Root->v] < 0 && rb[Root->r->v] <0){
return false;
}else{
return checkChild(Root->r);
}
}
return true;
}
void init(){
for(int i=0;i<=n;i++){
rb[i] = 0;
xb[i] = 0;
pre[i] = 0;
}
}
void bfs(node *root){
if(root == NULL) return;
cout<<root->v<<" "<<root->cnt<<endl;
if(root->l) bfs(root->l);
if(root->r) bfs(root->r);
}
bool can = true;
void travel(node *root){
if(can == false) return;
if(root->v == 15){
int ddd = 1;
}
if(root->l && root->r){
if(root->l->cnt != root->r->cnt) {
can = false;
return;
}
}
if(root->l) {
travel(root->l);
}
if(root->r) {
travel(root->r);
}
}
int main(){
cin>>k;
while(k--){
cin>>n;
init();
for(int i=1;i<=n;i++) {
int d;
cin>>d;
if(d < 0 ){
xb[-d] = 1;
rb[i] = 1;
pre[i] = -d;
}else{
rb[i] = 0;
pre[i] = d;
}
}
node *Root = new node();
Root->l = NULL;
Root->r = NULL;
Root->v = pre[1];
Root->cnt = 1;
for(int i=2;i<=n;i++) insert(Root,i);
if(rb[1] == 1) puts("No");
else if(checkChild(Root) == false) puts("No");
else{
//bfs(Root);
can = true;
travel(Root);
if(can == false) puts("No");
else puts("Yes");
}
}
return 0;
}
PAT(甲级)2017年秋季考试的更多相关文章
- PAT甲级满分攻略|记一次考试经历
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...
- PAT(甲级)2017年春季考试
PAT(甲级)2017年春季考试 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int ...
- 2019秋季PAT甲级_备考总结
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...
- 2019秋季PAT甲级_C++题解
2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...
- 2021.9.12周六PAT甲级考试复盘与总结
周六PAT甲级考试复盘与总结 先说结论:仍未步入"高手"行列:现在的学习节奏与方法是对的,有十万分的必要坚持下去. 题目 知识点 分数 T1 前缀和.二分 11 / 20 T2 排 ...
- pat甲级考试+pat1051+1056
同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...
- PAT甲级满分有感
时间轴: 2017年,数据结构加入了我的课程清单. 2018年12月,我从网易云课堂下载了数据结构的所有课程视频(学校里没有网,只能离线看),开始一刷.一刷只看了视频,基本没有做题,看到AVL树的时候 ...
- 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 ...
随机推荐
- 洛谷P5520 【[yLOI2019] 青原樱】
这题是小学奥数啊. 题意:求\(m\)个不同物品两两不相邻的方案数. 直接排列组合. 我们可以减掉他们之间最少需要空出来的位数--\(m-1\)个空位 像这样,我们只用留\(m-1\)个空位放在每两个 ...
- C++学习笔记3_类.和相关函数
1. 类*在C++中,struct和class没有明显差别,不同C#,class一定要new(手动开辟内存)出来struct Hero{ char name[64]; int sex;}void pr ...
- MIT线性代数:2.消元法
- 网络安全-主动信息收集篇第二章-二层网络扫描之nmap
nmap是网络层.传输层最重要的扫描工具之一,可以结合脚本对应用层的扫描和对网络弱点发现. 网络层发现nmap使用: Usage: nmap [Scan Type(s)] [Options] {tar ...
- 在vue中如何使用axios
1.前言 在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -& ...
- abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理八(二十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- Intellij IDEA配置JDK、Maven和Tomcat
一.配置JDK 1.File-->Project Structure 2.选择SDKs 3.点击+号添加自己本地jdk的安装目录,保存即可 二.配置Maven 1.File -> Othe ...
- 如何在SqlServer中使用层级节点类型hierarchyid
Sql Server2008开始新增的 hierarchyid 数据类型使存储和查询层次结构数据变得更为简单. 为了使用这个类型,笔者在此进行简单记录,同时为需要的朋友提供一个简单的参考. --获取层 ...
- 【原创】python倒排索引之查找包含某主题或单词的文件
什么是倒排索引? 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文 ...
- html部分知识点(待完善)
html部分知识点 跳转 在A页面某链接处`<a href="#aa" target="_blank"></a> 在B页面指定的标题处定 ...