PAT 甲级真题题解(121-155)

1121 Damn Single

模拟

 1 // 1121 Damn Single
 2 #include <map>
 3 #include <vector>
 4 #include <cstdio>
 5 #include <iostream>
 6 #include <algorithm>
 7 using namespace std;
 8
 9 map<int, int> m, vis;
10 vector<int> p;
11 const int N = 1e4 + 10;
12 int a[N];
13
14 int main() {
15     int n, x, y;
16     scanf("%d", &n);
17     while (n--) {
18         scanf("%d %d", &x, &y);
19         x++; y++;
20         m[x] = y;
21         m[y] = x;
22     }
23     scanf("%d", &n);
24     for (int i = 1; i <= n; i++) {
25         scanf("%d", &a[i]);
26         a[i]++;
27         vis[a[i]] = 1;
28     }
29     for (int i = 1; i <= n; i++) {
30         if (vis[ m[a[i]] ]) continue;
31         p.push_back(a[i]);
32     }
33     sort(p.begin(), p.end());
34     printf("%d\n", p.size());
35     for (int i = 0; i < p.size(); i++) {
36         if (i != 0) printf(" ");
37         printf("%05d", p[i] - 1);
38     }
39     return 0;
40 }

1122 Hamiltonian Cycle

模拟

 1 // 1122 Hamiltonian Cycle
 2 #include <set>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <iostream>
 6 #include <algorithm>
 7 using namespace std;
 8
 9 const int N = 205;
10 int MAP[N][N];
11 set<int> s;
12
13 int main() {
14     memset(MAP, -1, sizeof(MAP));
15     int n, m, k;
16     scanf("%d %d", &n, &m);
17     for (int i = 1; i <= m; i++) {
18         int u, v;
19         scanf("%d %d", &u, &v);
20         MAP[u][v] = 1; MAP[v][u] = 1;
21     }
22     scanf("%d", &k);
23     while (k--) {
24         bool f = 1;
25         int u, v, root;
26         scanf("%d", &m);
27         scanf("%d", &root);
28         s.insert(root);
29         u = root;
30         for (int i = 1; i < m; i++) {
31             scanf("%d", &v);
32             s.insert(v);
33             if (MAP[u][v] == -1) f = 0;
34             u = v;
35         }
36         if (root != u || s.size() != n || m != n + 1) f = 0;
37         if (!f) printf("NO\n");
38         else printf("YES\n");
39         s.clear();
40     }
41     return 0;
42 }

1124 Raffle for Weibo Followers

MAP标记

 1 // 1124 Raffle for Weibo Followers
 2 #include <map>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <iostream>
 6 #include <algorithm>
 7 using namespace std;
 8
 9 map<string, int> vis;
10 string str;
11
12 int main() {
13     bool f = 0;
14     int n, m, s, cnt;
15     cin >> n >> m >> s;
16     cnt = m;
17     for (int i = 1; i < s; i++) cin >> str;
18     for (int i = s; i <= n; i++) {
19         cin >> str;
20         if (cnt == m && !vis[str]) {
21             f = 1;
22             cout << str << endl;
23             cnt = 1;
24             vis[str] = 1;
25         }
26         if (!vis[str]) cnt++;
27     }
28     if (!f) cout << "Keep going..." << endl;
29     return 0;
30 }

1125 Chain the Ropes

思维

 1 // 1125 Chain the Ropes
 2 #include <cstdio>
 3 #include <iostream>
 4 #include <algorithm>
 5 using namespace std;
 6
 7 const int N = 1e4 + 10;
 8 int a[N];
 9
10 int main() {
11     int n, ans = 0;
12     cin >> n;
13     for (int i = 1; i <= n; i++) cin >> a[i];
14     sort(a + 1, a + 1 + n);
15     ans = a[1];
16     for (int i = 2; i <= n; i++) {
17         ans += a[i];
18         ans /= 2;
19     }
20     cout << ans << endl;
21     return 0;
22 }

原文地址:https://www.cnblogs.com/ehanla/p/10860178.html

时间: 2024-10-08 08:00:04

PAT 甲级真题题解(121-155)的相关文章

PAT甲题题解-1111. Online Map (30)-PAT甲级真题(模板题,两次Dijkstra,同时记下最短路径)

题意:给了图,以及s和t,让你求s到t花费的最短路程.最短时间,以及输出对应的路径.   对于最短路程,如果路程一样,输出时间最少的. 对于最短时间,如果时间一样,输出节点数最少的.   如果最短路程和最短时间路径一样,合并输出一次即可. 纯粹就是练习dijkstra,没什么难的. 第一次dijkstra求最短路程,记录下每个节点的路程和时间. 第二次dijkstra求最短时间,记录下每个节点的时间和经过的节点数. pre数组用来存储前驱节点,保存路径 #include <iostream>

1085. Perfect Sequence (25)-PAT甲级真题

1085. Perfect Sequence (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng Given a sequence of positive integers and another positive integer p. The sequence is said to be a "perfect sequence" if M <= m * p where M and m

1020. Tree Traversals (25) PAT甲级真题

之前我看了这道题,实在是看不懂网上的解题答案,他们的具体思路基本上就是通过后续遍历和中序遍历,直接推出层次遍历. 我苦思冥想了半天,是在没看懂这种思路,于是想了一个笨点的但是也比较好理解的思路,通过后续和中序,先推出整个二叉树,再考虑 对二叉树层次遍历. 本题还有一点要注意的时在输出结果的末尾,如果使用了类似 pirntf("%d ",data); 这样的格式是不对的,一定要对末尾进行判断消除最尾端的空格. 首先最核心的部分是通过两次遍历反推回二叉树:这里的思路是,后续遍历的最末尾,一

1078. Hashing (25)-PAT甲级真题

1078. Hashing (25)The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to be "H(key) = key % TSize" where TSize is the

1132 Cut Integer PAT 甲级真题

#include<iostream> #include<sstream>#include<string>using namespace std;int n;bool judge(string s){ long long t1, t2, t3; stringstream ss; /*ss.clear(); ss << s; ss >> t1; string s1 = s.substr(0,(int) s.size() / 2); ss.clear(

1129 Recommendation System PAT 甲级真题(输出格式,set使用)

Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item has been accessed by this user. Inp

1054. 求平均值 (20)-PAT乙级真题

今天刚刚到学校,2017年学习正式开始了,今天看到了浙大的<数据结构>这学期又要开课了,决定一定要跟着学习一遍:在大学生mooc网上学习:http://www.icourse163.org/course/zju-93001#/info :然后就是跟着<算法之美>也要同步看完. 然后就在PAT上随便做一道题,这是第一次通过AC,发现了两个比较好的博客主页:http://www.liuchuo.net/  和  https://www.joyhwong.com/   都总结了刷题的过程

PAT 乙级真题 1002.数字分类

PAT 乙级真题 1002.数字分类 题目描述 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...: A3 = 被5除后余2的数字的个数: A4 = 被5除后余3的数字的平均数,精确到小数点后1位: A5 = 被5除后余4的数字中最大数字. 输入格式 每个输入包含1个测试用例.每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的

PAT 乙级真题 1006.1016.部分A+B

PAT 乙级真题 1006.1016.部分A+B 题目描述 正整数A的"DA(为1位整数)部分"定义为由A中所有DA组成的新整数PA.例如:给定A = 3862767,DA = 6,则A的"6部分"PA是66,因为A中有2个6. 现给定A.DA.B.DB,请编写程序计算PA + PB. 输入格式 输入在一行中依次给出A.DA.B.DB,中间以空格分隔,其中0 < A, B < 1010. 输出格式 在一行中输出PA + PB的值. 输入样例 386276