PAT 2016年浙大复试机试

2024-06-19 16:18
文章标签 浙大 pat 机试 2016 复试

本文主要是介绍PAT 2016年浙大复试机试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 PAT 甲级 1112 Stucked Keyboard

#include <bits/stdc++.h>
using namespace std;
int num[256];
bool broken[256];
int main() {fill(broken,broken+256,true);int n;cin>>n;string s;cin>>s;char old,now;for(size_t i=0;i<s.size();++i){now=s[i];if(i==0||now!=old){num[now]=1;if(i!=0&&num[old]!=0) broken[old]=false;}else num[now]=(num[now]+1)%n;old=now;}if(num[now]!=0) broken[now]=false;set<int> ans;for(auto i:s){if(broken[i]){cout<<i;ans.insert(i); broken[i]=false;}}cout<<"\n";for(size_t i=0;i<s.size();++i){cout<<s[i];if(ans.count(s[i])!=0) i+=(n-1);}cout<<"\n";
}

2 PAT 甲级 1113 Integer Set Partition

#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int num[MAXN];
int main() {int n;cin>>n;for(int i=0;i<n;++i){cin>>num[i];}sort(num,num+n);int ans=0;for(int i=0;i<n;++i){ans=i<n/2?(ans-num[i]):(ans+num[i]);}cout<<n%2<<" "<<ans; 
}

3 PAT 甲级 1114 Family Property

#include <bits/stdc++.h>
using namespace std;
const int N=10010;
struct Family{int m,ts,ta;
};
unordered_map<int,Family> ans_data;
int estate[N],area[N];
set<int> all_p,ids;
vector<int> ans;int father[N];
int Find(int x){if(father[x]!=x) father[x]=Find(father[x]);return father[x];
}
void Union(int a,int b){int ra=Find(a),rb=Find(b);if(ra<rb) father[rb]=ra;else father[ra]=rb;
}
int main() {for(int i=0;i<N;++i) father[i]=i;int n;cin>>n;for(int i=0;i<n;++i){int id,fa,ma,k,m,a,chi;cin>>id>>fa>>ma>>k;all_p.insert(id);if(fa!=-1) {Union(id,fa); all_p.insert(fa);}if(ma!=-1) {Union(id,ma); all_p.insert(ma);}for(int j=0;j<k;++j){cin>>chi;if(chi!=-1) {Union(id,chi); all_p.insert(chi);}}cin>>m>>a;estate[id]=m,area[id]=a;}for(auto i:all_p){int id=Find(i);ans_data[id].m++;ans_data[id].ts+=estate[i];ans_data[id].ta+=area[i];ids.insert(id);}for(auto i:ids) ans.push_back(i);sort(ans.begin(),ans.end(),[](int a,int b){int oa=ans_data[a].ta*ans_data[b].m;int ob=ans_data[b].ta*ans_data[a].m;if(oa!=ob) return oa>ob;else return a<b;});printf("%lu\n",ans.size());for(auto i:ans){printf("%04d %d %.3lf %.3lf\n",i,ans_data[i].m,ans_data[i].ts*1.0/ans_data[i].m,ans_data[i].ta*1.0/ans_data[i].m);}
}

4 PAT 甲级 1115 Counting Nodes in a BST

#include <bits/stdc++.h>
using namespace std;
struct Node{int val,layer;Node *lchild{NULL},*rchild{NULL};
};
void Insert(Node *&root,int val){if(root==NULL){root=new Node();root->val=val;}else{if(val<=root->val) Insert(root->lchild,val);else Insert(root->rchild,val);}
}
vector<Node*>nodes;
int max_layer=1;
void BFS(Node *root){if(root==NULL) return;queue<Node*> q;q.push(root);root->layer=1;while(!q.empty()){Node* now=q.front();q.pop();nodes.push_back(now);if(now->lchild){now->lchild->layer=now->layer+1;max_layer=max(max_layer,now->layer+1);q.push(now->lchild);}if(now->rchild){now->rchild->layer=now->layer+1;max_layer=max(max_layer,now->layer+1);q.push(now->rchild);}}
}
int main() {int n;cin>>n;Node *root=NULL;for(int i=1;i<=n;++i){int tmp;cin>>tmp;Insert(root,tmp);}BFS(root);int c1=0,c2=0;for(auto p:nodes){if(p->layer==max_layer-1) ++c2;if(p->layer==max_layer) ++c1;}cout<<c1<<" + "<<c2<<" = "<<c1+c2<<"\n";
}

这篇关于PAT 2016年浙大复试机试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075520

相关文章

机试算法模拟题 服务中心选址

题目描述 一个快递公司希望在一条街道建立新的服务中心。公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址:使服务中心到所有区域的距离的总和最小。 给你一个数组positions,其中positions[i] = [left, right] 表示第 i 个区域在街道上的位置,其中left代表区域的左侧的起点,right代表区域的右侧终点,假设服务中心的位置为loca

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

【中等】保研/考研408机试-二分查找(模板题)

二分查找就是在一个有序数组中查找某个值,以首端尾端的中点mid查找对比,mid与要查找的数进行对比,看落在哪个区间,在那个区间重新得到首端和尾端,进而得到新的mid值。 一、模板题 二分查找-I_牛客题霸_牛客网 class Solution {public:int search(vector<int>& nums, int target) {int left=0,right=nums.s

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 94 分 最新华为OD机试目录: https://blog.

浙大数据结构——03-树1 树的同构

这道题我依然采用STL库的map,从而大幅减少了代码量 简单说一下思路,两棵树是否同构,只需比较俩树字母相同的结点是否同构,即是否左==左,右==右或者左==右,右==左。 1、条件准备 atree和btree是存两个数结点字母,第几个就存输入的第几个结点的字母。 map通过结点的字母作为键,从而找到两个子节点的信息 都要用char类型 #include <iostream>#inc

浙大数据结构:堆栈和队列的定义与操作

堆栈: 顺序存储: #include<stdio.h>#include<stdlib.h>typedef int ElementType ;typedef int position ;#define MAXSIZE 100#define ERROR -1struct SNode {ElementType * Data ;position top;int Maxsize;};

华为OD机试 - 最大利润(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。 一、题目描述