PAT 1139 1138 1137 1136

一个月不写题,有点生疏。。脑子跟不上手速,还可以啦,反正今天很开心。

PAT 1139 First Contact

18/30 找个时间再修bug

23/30

28/30

30/30 补完啦

这道题的细节坑点:
1.输出id需要补全4位 用print("%04d") 5分ok
2.需要舍弃查询的相恋男女的直接边 3分ok
3.大坑 0000 与 -0000 使用int型无法区分男女的. 2分ok 想法:用string输入 看长度和第一位符号位 判0和-0 转int

思路:图论,找男女相恋的中间人。

#include<bits/stdc++.h>
using namespace std; /*
细节坑点:
1.输出id需要补全4位 用print("%04d") 5分ok
2.需要舍弃查询的相恋男女的直接边 3分ok
3.大坑 0000 与 -0000 使用int型无法区分男女的. 2分ok 想法:用string输入 看长度和第一位符号位 判0和-0 转int
*/ const int maxn = 10000;
vector<int> g[maxn];
int gender[10010];
int n,m;
vector<pair<int,int> >ans; void init(){
for(int i=0;i<=10000;i++) gender[i] = 0;
} bool cmp(pair<int,int> a,pair<int,int> b){
if(a.first == b.first) return a.second < b.second;
return a.first < b.first;
} int stringToAbsInt(string s){
int x = 0;
int flag = 0;
if(s.length() == 5){
flag = 1;
for(int i=1;i<s.length();i++) x = x * 10 + (s[i]-'0');
}else{
flag = 0;
for(int i=0;i<s.length();i++) x = x * 10 + (s[i]-'0');
}
if(flag){
gender[x] = 1;
}else{
gender[x] = 0;
}
return abs(x);
} int main(){
cin>>n>>m;
init();
for(int i=1;i<=m;i++){
// int u,v;
string uu,vv;
cin>>uu>>vv;
int absu = stringToAbsInt(uu);
int absv = stringToAbsInt(vv);
g[absu].push_back(absv);
g[absv].push_back(absu);
}
int k;
cin>>k;
for(int i=1;i<=k;i++){
int u,v;
cin>>u>>v;
int absu = abs(u);
int absv = abs(v);
int genderu = gender[absu];
int genderv = gender[absv];
int cnt = 0;
for(int c=0;c<g[absu].size();c++){
int cc = g[absu][c];
if(cc == absv) continue; //舍弃 v是u的直接朋友的边
if(gender[cc] != genderu ) continue;
for(int d=0;d<g[absv].size();d++){
int dd = g[absv][d];
if(dd == absu) continue; //舍弃 u是v的直接朋友的边
if(gender[dd] != genderv ) continue;
bool flag = false;
for(int pos = 0;pos<g[cc].size();pos++){
if(g[cc][pos] == dd){
flag = true;
break;
}
}
if(flag){
cnt++;
ans.push_back(make_pair(g[absu][c],g[absv][d]));
}
}
}
cout<<cnt<<endl;
sort(ans.begin(),ans.end(),cmp);
for(int i=0;i<cnt;i++){
printf("%04d %04d\n",ans[i].first,ans[i].second); //输出补全4位
}
ans.clear();
}
return 0;
}

1138 Postorder Traversal

数据结构,二叉树先序中序建树后后序遍历

#include<bits/stdc++.h>
using namespace std; const int maxn = 50010;
int n;
int pre[maxn];
int in[maxn];
int post[maxn];
bool flag = false; struct node{
int v;
struct node *l;
struct node *r;
}; //建树
node* build(int l,int r,int rootIdx){
if(l > r) return NULL;
node *root = new node();
root->v = pre[rootIdx];
int pos = l;
while(in[pos] != pre[rootIdx]) pos++;
root->l = build(l,pos-1,rootIdx+1);
root->r = build(pos+1,r,rootIdx+(pos-l+1));
return root;
} //后序遍历 打印第一个被遍历的 结点值
void postTravel(node *Root){
if(flag) return;
if(Root->l == NULL && Root->r == NULL){
cout<<Root->v<<endl;
flag = true;
return;
}
if(Root->l) postTravel(Root->l);
if(Root->r) postTravel(Root->r);
return;
} int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>pre[i];
for(int i=1;i<=n;i++) cin>>in[i];
node *Root = new node();
Root = build(1,n,1); //建树
postTravel(Root);
return 0;
}

1137 Final Grading

数据结构,map,排序常见题型

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std; const int maxn = 10010;
int p; //P the number of students having done the online programming assignmen
int m; //the number of students on the mid-term list
int n; //the number of students on the final exam list struct student{
string id;
int gp;
int gmid;
int gfinal;
int g;
}; unordered_map<string,student > mp;
vector<student> ans; bool cmp(student stua,student stub){
if(stua.g == stub.g){
return stua.id < stub.id;
}
return stua.g > stub.g;
} void print(){
for(int i=0;i<ans.size();i++){
cout<<ans[i].id<<" "<<ans[i].gp<<" "<<ans[i].gmid<<" "<<ans[i].gfinal<<" "<<ans[i].g<<endl;
}
} void input(){
cin>>p>>m>>n;
for(int i=1;i<=p;i++){
string id;
int gp;
cin>>id>>gp;
mp[id].id = id;
mp[id].gp = gp;
mp[id].gmid = -1;
mp[id].gfinal = -1;
mp[id].g = -1;
}
for(int i=1;i<=m;i++){
string id;
int gmid;
cin>>id>>gmid;
mp[id].gmid = gmid;
}
for(int i=1;i<=n;i++){
string id;
int gfinal;
cin>>id>>gfinal;
mp[id].gfinal = gfinal;
}
} int main(){
input();
for(auto it = mp.begin();it!=mp.end();it++){
if(it->second.gp < 200) continue;
// if(it->second.gfinal < 60 || it->second.gfinal > 100) continue; //吼吼 一开始题意理解错啦 g才是final score
if(it->second.gmid > it->second.gfinal) {
int tempScore = ((it->second.gmid*4 + it->second.gfinal*6) );
if(tempScore % 10 >= 5) it->second.g = tempScore/10+1;
else it->second.g= tempScore/10;
}
else it->second.g = it->second.gfinal;
if(it->second.g >= 60 && it->second.g <=100) ans.push_back(it->second);
}
sort(ans.begin(),ans.end(),cmp);
print();
return 0;
}

1136 A Delayed Palindrome

大数模拟加法进位

#include<bits/stdc++.h>
using namespace std; vector<int> v1;
vector<int> v2;
vector<int> ans;
/*
reverse
add
*/ void print(){
for(int i=0;i<v1.size();i++) cout<<v1[i];
cout<<" + ";
for(int i=0;i<v2.size();i++) cout<<v2[i];
cout<<" = ";
for(int i=0;i<ans.size();i++) cout<<ans[i];
cout<<endl;
} bool check(){
int len = ans.size();
for(int i=0;i<len/2;i++){
if(ans[i] != ans[len-i-1]) return false;
}
return true;
} void clear(){
v1.clear();
v2.clear();
for(int i=0;i<ans.size();i++) v1.push_back(ans[i]);
ans.clear();
} int main(){
int d;
while(scanf("%1d",&d)!=EOF) v1.push_back(d);
int t = 0;
bool flag = false;
while((t++) < 10){
for(int i=0;i<v1.size();i++) ans.push_back(v1[i]);
if(check()){
for(int i=0;i<ans.size();i++) cout<<ans[i];
cout<<" is a palindromic number.";
flag = true;
break;
}
ans.clear();
int ci = 0;
for(int i=0;i<v1.size();i++) v2.push_back(v1[i]);
reverse(v2.begin(),v2.end());
//大数加法模拟
for(int i=v1.size()-1;i>=0;i--){
int si = v1[i] + v2[i] + ci;
if(si >= 10) {
ci = si/10;
si = si%10;
}else{
ci = 0;
}
ans.push_back(si);
}
if(ci!=0) ans.push_back(ci);
reverse(ans.begin(),ans.end());//反转才是 结果和
ci = 0;
print();
if(check()){
for(int i=0;i<ans.size();i++) cout<<ans[i];
cout<<" is a palindromic number.";
flag = true;
break;
}
clear();
}
if(flag == false) cout<<"Not found in 10 iterations."<<endl;
return 0;
}

PTA 1139 1138 1137 1136的更多相关文章

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

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

  2. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告

    剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...

  3. 刷题11. Container With Most Water

    一.题目说明 11.Container With Most Water,这个题目难度是Medium. 二.我的做法 乍一看,简单啊,两个for循环就可以了,我在本地写的. #include<io ...

  4. PAT (Advanced Level) 1136~1139:1136模拟 1137模拟 1138 前序中序求后序 1139模拟

    1136 A Delayed Palindrome(20 分) 题意:给定字符串A,判断A是否是回文串.若不是,则将A反转得到B,A和B相加得C,若C是回文串,则A被称为a delayed palin ...

  5. PTA 甲级 1139

    https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 其实这道题目不难,但是有很多坑点! 首先数据 ...

  6. 1136: 零起点学算法43——多组测试数据输出I

    1136: 零起点学算法43--多组测试数据输出I Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: ...

  7. 51nod 1138 连续整数的和(数学公式)

    1138 连续整数的和 #include <iostream> #include <cmath> #include <cstdio> using namespace ...

  8. LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 & 二分

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题意:给你一个数n,然后找个一个最小的数x,使得x!的末尾有n个0:如果没有输出 ...

  9. URAL 1139 City Blocks(数论)

    The blocks in the city of Fishburg are of square form. N avenues running south to north and Mstreets ...

随机推荐

  1. 几种部署Goku API Gateway的方式,最快一分钟可使用上网关

    本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文. 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API ...

  2. [考试反思]1006csp-s模拟测试62:隔断

    本来说好的好一场烂一场. 那样的日子结束了,连着烂了两场...幸亏T3傻逼了救我一命不算太惨... T1树上的特殊性质会做但是没有继续想下去就死在错贪心上了还没有过那个点... T2迭代至稳定被我错误 ...

  3. 使用Typescript重构axios(二)——项目起手,跑通流程

    0.系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三)- ...

  4. it公司比较

    1:本人西电通院2013届毕业硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:但无名小公司有时也 ...

  5. 02-MyBatis执行Sql的流程分析

    目录 获取Mapper 简单总结 重要类 参考 本博客着重介绍MyBatis执行Sql的流程,关于在执行过程中缓存.动态SQl生成等细节不在本博客中体现,相应内容后面再单独写博客分析吧. 还是以之前的 ...

  6. 关于jQuery easyUI 添加合计统计行

    首先在onLoadSuccess中添加计算函数:计算方法按各自业务需要,我做了一个判断非数 然后再在gatagrid表格添加行,$('#div').datagrid('appendRow', {... ...

  7. hdu 5901 Count primes (meisell-Lehmer)

    Count primes Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  8. ZeroC ICE的远程调用框架

    想搞清楚slice为我们生成了什么样的框架代码,就先搞明白Ice的远程调用框架暗中为我们做了些什么? Ice将Ice Object的方法调用分为三个阶段(或步骤),分别是begin,process和e ...

  9. PHP 的面向对象 与 类

    面向对象 == OO 学习面向对象 == XXOO;[学习使我快乐!] <!--附一个demo类的实例化--> http://note.youdao.com/noteshare?id=38 ...

  10. 理解Redis的反应堆模式

    1. Redis的网络模型 Redis基于Reactor模式(反应堆模式)开发了自己的网络模型,形成了一个完备的基于IO复用的事件驱动服务器,但是不由得浮现几个问题: 为什么要使用Reactor模式呢 ...