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. Pandas分类(category)数据处理

    分类(Category)数据:直白来说,就是取值为有限的,或者说是固定数量的可能值.例如:性别.血型 指定数据类型构建分类数据 dtype="category" 以血型为例,创建一 ...

  2. $color$有色图

    不想看题解的请速撤离 为防被骂灌输题解,撤离缓冲区 这里没字 $Ploya$神题一道,所以我自己做不出来,颓了一部分题解. 由于理(颓题)解不(没)深(脸)中途又拿了$std$对拍(输出中间结果并qj ...

  3. P2579 [ZJOI2005]沼泽鳄鱼(邻接矩阵,快速幂)

    题目简洁明了(一点都不好伐) 照例,化简题目 给一张图,每一个时间点有一些点不能走,(有周期性),求从起点第k秒恰好在终点的方案数,可重复,不可停留. 额dp实锤 于是就被打脸了.... 有一种东西叫 ...

  4. git 设置不用每次都输入 账号密码

    执行命令 git config --global credential.helper store 然后,下次再输入一次 账号密码 就可以了.

  5. mysql用find_in_set代替like搜索提高性能

    mysql用find_in_set代替like搜索提高性能 <pre>SELECT * from mobantestinfo1 where find_in_set('33',info2); ...

  6. nyoj 35-表达式求值(stack, 栈的应用)

    35-表达式求值 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:37 submit:53 题目描述: ACM队的mdd想做一个计算器,但是,他要做的 ...

  7. Mybatis实现数据的增删改查

    Mybatis实现数据的增删改查 1.项目结构(使用maven创建项目) 2.App.java package com.GetcharZp.MyBatisStudy; import java.io.I ...

  8. nyoj 274-正三角形的外接圆面积 (R = PI * a * a / 3)

    274-正三角形的外接圆面积 内存限制:64MB 时间限制:1000ms 特判: No 通过数:14 提交数:22 难度:0 题目描述: 给你正三角形的边长,pi=3.1415926 ,求正三角形的外 ...

  9. opencv MatchTemplate()模板匹配寻找最匹配部分

    通常,随着从简单的测量(平方差)到更复杂的测量(相关系数),可以获得越来越准确的匹配,然而,这同时也会以越来越大的计算量为代价.比较科学的方法是对所有这些方法多次测试实验,以便为自己的应用选择同时兼顾 ...

  10. 就该这样理解 OSI 七层参考模型、浅谈不同局域网之间的通信

    简介 说到OSI参考模型,理解网络与网络之间的关系,不说太深入难以理解的东西,只求能最大程度上理解与使用. 参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为O ...