PAT(甲级)2017年秋季考试

PAT(甲级)2017年秋季考试

还有一题由于上午心情复杂。。没调试完。待补。

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

判断是否红黑树
待补

原文地址:https://www.cnblogs.com/fisherss/p/11988440.html

时间: 2024-10-07 05:31:57

PAT(甲级)2017年秋季考试的相关文章

PAT(甲级)2017年春季考试

PAT(甲级)2017年春季考试 C题图论欧拉回路,还没写,因为太饿了,待补 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int m,n,s; vector<string> person; set<string> se; vector<string> ans; int main(){ cin>>m>>n>>s; for(

PAT甲级考试题库1001 A+B Format 代码实现及相关知识学习

准备参加九年九月份的PAT甲级证书考试,对网站上的题目进行总结分析: 1001题 A+B Format (20 分) Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits). 计算a+b的值并以一定格式输出其和sum(数字需要

PAT甲级1005 Spell It Right

题目:PAT甲级 1005 题解:水题.看到题目的第一时间就在想一位一位的mod,最后一加一转换就完事了.结果看到了N最大为10的100的次方,吓得我赶紧放弃这个想法... 发现碰到这种情况用字符串十分好用,这道题应该考察的就是这一点.大致思路就是把数字的每一位放到字符串中,然后通过ASCII码得到每一位的相加结果num,然后把num一位一位的放到stack中,使用stack是因为它先进先出的特性,最后输出就行了. 代码: 1 #include<cstdio> 2 #include<qu

2017年精算师考试准考证打印入口及流程

2017年精算师考试将在10月28日至24日进行,距离精算师考试时间还是有28天.由于考试时间即将来临,在考试临近的时候,考生们最关心的问题就是精算师考试准考证打印的相关问题,今天小编就来告诉大家探讨一下. 相信还有大部分考生还不清楚精算师考试准考证打印入口在哪里,其实考生们只需要在网上直接进入中国精算师协会官网,就可以打印准考证了. 当然对于很多第一次报名参加精算师考试的考生来说,对于这一块没有什么经验,所以为大家梳理了一下精算师考试准考证打印的具体流程,以供大家参考. 1.请报名成功的考生在

【临时重发】复旦大学 在职软件工程硕士(双证)2017年入学考试 参考书推荐

[临时重发]复旦大学 在职软件工程硕士(双证)2017年入学考试 参考书推荐 2017-06-04 MSE热线 复旦MSE热线 (一)统考科目:(除了政治时政版(现在还没有),不一定要所谓2018版) 政治理论 (1)<全国硕士研究生招生考试 思想政治理论 考试大纲>,教育部考试中心,高等教育出版社,10元. (2)<全国硕士研究生招生考试 思想政治理论 考试大纲解析>,教育部考试中心,高等教育出版社,59元. 英语(二) (1)<全国硕士研究生招生考试 英语(二) 考试大纲

PAT甲级考前整理

终于在考前,刷完PAT甲级130道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种境界.PAT甲级题目总的说卡题目的比较多,卡测试点的比较少,有些题目还会有题意混淆,这点就不吐槽了吧.静下心来耍这130道题,其实磨练的是一种态度与手感,养成的是一种习惯.热爱AC没有错!! 130道题目主要的考点: 1.排序:快速排序,直接插入排序,希尔排序,分治排序,堆排序. 2.图论:拓扑排序.最短路径.深度搜索.广度搜索. 3.树:树的遍历.完全二叉树.AVL. 4.其他:并查集,模拟,哈希.背包.

PAT甲级专题|最短路

PAT甲级最短路 主要算法:dijkstra 求最短最长路.dfs图论搜索. 1018,dijkstra记录路径 + dfs搜索路径最值 25分,错误点暂时找不出.. 如果只用dijkstra没法做,只能得20分 #include<bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f; const int maxn = 510; int cmax,n,ter,m; int caps[maxn]; int g[maxn][m

【PAT甲级】1070 Mooncake (25 分)(贪心水中水)

题意: 输入两个正整数N和M(存疑M是否为整数,N<=1000,M<=500)表示月饼的种数和市场对于月饼的最大需求,接着输入N个正整数表示某种月饼的库存,再输入N个正数表示某种月饼库存全部出手的利润.输出最大利润. trick: 测试点2可能包含M不为整数的数据.(尽管题面说明M是正整数,可是根据从前PAT甲级题目的经验,有可能不是整数.....) 代码: #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using names

PAT(甲级)2019年秋季考试

第一题用搜索,超时了,待补 ##7-1搜索 12/20分 #include<bits/stdc++.h> using namespace std; int n,k,m; typedef long long ll; ll starts = 0; ll endss = 0; bool flag = false; bool first = true; int t = 1; int sums(ll x){ int ans = 0; while(x){ ans += x%10; x/=10; } ret