PAT 甲级 2016年冬季

阅读: 评论:0

PAT 甲级 2016年冬季

PAT 甲级 2016年冬季

1 PAT 甲级 1120 Friend Numbers

#include <bits/stdc++.h>
using namespace std;
int main() {int n;cin>>n;set<int> ans;while(n--){string tmp;cin>>tmp;int sum=0;for(auto i:tmp) sum+=i-'0';ans.insert(sum);} cout<<ans.size()<<"n";bool is_first=true;for(auto i:ans){if(!is_first) cout<<" ";is_first=false;cout<<i;}
}

2 PAT 甲级 1121 Damn Single

#include <bits/stdc++.h>
using namespace std;
int cp[100010],come[100010];
int main() {int n;cin>>n;while(n--){int a,b;cin>>a>>b;cp[a]=b,cp[b]=a;} int k;cin>>k;vector<int> gue(k);for(int i=0;i<k;++i){cin>>gue[i];come[gue[i]]++,come[cp[gue[i]]]++;}set<int> ans;for(auto i:gue){if(come[i]==1) ans.insert(i);}cout<<ans.size()<<"n";bool is_first=true;for(auto i:ans){if(!is_first) cout<<" ";is_first=false;printf("%05d",i);}
}

3 PAT 甲级 1122 Hamiltonian Cycle

#include <bits/stdc++.h>
using namespace std;
const int N=220;
set<int> graph[N];
int nums[N];
int main() {int n,m;cin>>n>>m;for(int i=0;i<m;++i){int x,y;cin>>x>>y;graph[x].insert(y);graph[y].insert(x);}int k;cin>>k;for(int i=0;i<k;++i){memset(nums,0,sizeof(nums));bool flag=true; int nv;cin>>nv;vector<int> path(nv);for(int j=0;j<nv;++j){cin>>path[j];nums[path[j]]++;}// 判每个节点出现次数for(int j=1;j<=n;++j){if(j==path[0]){if(nums[j]!=2) {flag=false;goto fin;}}else{if(nums[j]>1||nums[j]==0) {flag=false;goto fin;}}}// 判联通for(size_t j=1;j<path.size();++j){if(graph[path[j]].count(path[j-1])==0) {flag=false;goto fin;}}fin:if(flag) cout<<"YESn";else cout<<"NOn";}
}

4 PAT 甲级 1123 Is It a Complete AVL Tree

#include <bits/stdc++.h>
using namespace std;
struct Node{int val,height; Node *lchild{NULL},*rchild{NULL};
};
int UpdateHeight(Node *r){if(r==NULL) return 0;r->height=max(UpdateHeight(r->lchild),UpdateHeight(r->rchild))+1;return r->height;
}
int GetBalenceFactor(Node *n){int a=0,b=0;if(n->lchild) a=n->lchild->height;if(n->rchild) b=n->rchild->height;return a-b;
}
void L(Node *&r){Node *rchild=r->rchild;r->rchild=rchild->lchild;rchild->lchild=r;UpdateHeight(r);UpdateHeight(rchild);r=rchild;
}
void R(Node *&r){Node *lchild=r->lchild;r->lchild=lchild->rchild;lchild->rchild=r;UpdateHeight(r);UpdateHeight(lchild);r=lchild;
}
void Insert(Node *&root,int val){if(root==NULL) {root=new Node();root->val=val;return;}if(val<root->val){ // 往左边走Insert(root->lchild,val);UpdateHeight(root);if(GetBalenceFactor(root)==2){if(GetBalenceFactor(root->lchild)==1){R(root);}else if(GetBalenceFactor(root->lchild)==-1){L(root->lchild);R(root);}}}else{ // 往右边走Insert(root->rchild,val);UpdateHeight(root);if(GetBalenceFactor(root)==-2){if(GetBalenceFactor(root->rchild)==-1){L(root);}else if(GetBalenceFactor(root->rchild)==1){R(root->rchild);L(root);}}}
}
vector<Node*> ans;
void Layer(Node *root){if(root==NULL) return;queue<Node*>q;q.push(root);while(!q.empty()){Node *now=q.front();q.pop();ans.push_back(now);if(now->lchild) q.push(now->lchild);if(now->rchild) q.push(now->rchild);}
}int main() {int n;cin>>n;Node* root=NULL;for(int i=0;i<n;++i){int tmp;cin>>tmp;Insert(root,tmp);}Layer(root);for(size_t i=0;i<ans.size();++i){if(i!=0) cout<<" ";cout<<ans[i]->val;}cout<<"n";bool flag=true;bool have=false;for(int i=ans.size()-1;i>=0;--i){if(have&&(!ans[i]->lchild||!ans[i]->rchild)) flag=false;if(ans[i]->rchild) have=true;if(have&&!ans[i]->lchild) flag=false;if(ans[i]->lchild) have=true;}if(flag) cout<<"YES";else cout<<"NO";
}

本文发布于:2024-01-28 09:06:25,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064039896320.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:冬季   PAT
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23