注意使用STL,可以很省事的~~~

  • 7-1 到底有多二 (15 分)
  • 7-2 大笨钟 (10 分)
  • 7-3 谁先倒 (15 分)
  • 7-4 帅到没朋友 (20 分)
  • 7-5 重要的话说三遍 (5 分)
  • 7-6 奇偶分家 (10 分)
  • 7-7 输出GPLT (20 分)
  • 7-8 后天 (5 分)
  • 7-9 抢红包 (25 分)
  • 7-10 排座位 (25 分)
  • 7-11 玩转二叉树 (25 分)
  • 7-12 关于堆的判断 (25 分)

7-1 到底有多二 (15 分)

思路

字符串处理,统计2 的个数,判断是不是负数和是不是偶数即可。输出%需要两个%%。

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){string s;cin >> s;double a = 0, b = 0, c = 1, d = 1;int len = s.size();for(int i = 0; i < len; i++){if(s[i] == '-') c += 0.5;else{int tmp = s[i] - '0';if(tmp == 2) a++;b++;if(i+1 == len && tmp % 2 == 0) d++;}}double res = a / b * c * d * 100;printf("%.2lf%%\n", res);return 0;
}

7-2 大笨钟 (10 分)

思路

根据题意模拟即可。输出自动补零的格式: %0Xd,X为要保留几位数。

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){int a, b; char c;cin >> a >> c >> b;if(a < 12 || (a == 12 && b == 0)) printf("Only %02d:%02d.  Too early to Dang.", a, b);else{if(b != 0) a++;for(int i = 1; i <= a-12; i++) printf("Dang");}return 0;
}

7-3 谁先倒 (15 分)

思路
根据题意一遍输入一遍判断即可,注意要把所有数据都输入

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){int a, b;cin >> a >> b;int m, x = 0, y = 0;cin >> m;int A, AA, B, BB;for(int i = 1; i <= m; i++){cin >> A >> AA >> B >> BB;if(x > a || y > b) continue;if(A + B == AA && A + B == BB) continue;else if(A + B == AA) x++;else if(A + B == BB) y++;}if(x > a) cout << "A" << endl << y << endl;else cout << "B" << endl << x << endl;return 0;
}

7-4 帅到没朋友 (20 分)

思路
用 map 来统计每个人在朋友圈里出现的次数,如果一个人出现零次,那就是没朋友的。
注意处理只有一个人的朋友圈。
注意处理输出的格式(补零 and 结尾无空格) 和 题目要求

AC代码

#include <bits/stdc++.h>
using namespace std;map<int, int> v;
vector<int> res;int main(){int n;cin >> n;int m, x;for(int i = 1; i <= n; i++){cin >> m;if(m == 1) cin >> x;else{for(int i = 1; i <= m; i++){cin >> x;v[x]++;}}}cin >> m;for(int i = 1; i <= m; i++){cin >> x;if(v[x] == 0){res.push_back(x);v[x]++;}}int len = res.size();if(len == 0) printf("No one is handsome\n");else{for(int i = 0; i < len; i++){printf("%05d", res[i]);if(i+1 == len) printf("\n");else printf(" ");}}return 0;
}

7-5 重要的话说三遍 (5 分)

思路
福利题,最好直接赋值题目上的格式,不要手敲

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){cout << "I'm gonna WIN!" << endl;cout << "I'm gonna WIN!" << endl;cout << "I'm gonna WIN!" << endl;return 0;
}

7-6 奇偶分家 (10 分)

思路
% 2 或者 & 1 判断奇偶即可。
& 是位运算,可以看看这个 传送门~~~

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){int n;cin >> n;int x = 0, y = 0, num;for(int i = 1; i <= n; i++){cin >> num;if(num&1) x++;else y++;}cout << x << " " << y << endl;return 0;
}

7-7 输出GPLT (20 分)

思路
分别统计 RPLT 出现的次数,依次输出即可

AC代码

#include <bits/stdc++.h>
using namespace std;int v[5] = {0};int main(){string s;cin >> s;int len = s.size();for(int i = 0; i < len; i++){if(s[i] == 'g' || s[i] == 'G') v[1]++;else if(s[i] == 'p' || s[i] == 'P') v[2]++;else if(s[i] == 'l' || s[i] == 'L') v[3]++;else if(s[i] == 't' || s[i] == 'T') v[4]++;}while(v[1] + v[2] + v[3] + v[4] != 0){if(v[1]) cout << "G", v[1]--;if(v[2]) cout << "P", v[2]--;if(v[3]) cout << "L", v[3]--;if(v[4]) cout << "T", v[4]--;}return 0;
}

7-8 后天 (5 分)

思路
加 2,然后对 7 取模既可。也可以连写 if - else。

AC代码

#include <bits/stdc++.h>
using namespace std;int main(){int n;cin >> n;n = (n+2) % 7;if(n == 0) n = 7;cout << n << endl;return 0;
}

7-9 抢红包 (25 分)

思路
按照题意统计即可。注意发红包的人要减去对应的财富,最后结构体排序(写 cmp 即可,不必重载 小于号)。

AC代码

#include <bits/stdc++.h>
#include <vector>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <stack>
#define ll long long
#define chushi(a, b) memset(a, b, sizeof(a))
#define endl "\n"
const double eps = 1e-8;
const ll INF=0x3f3f3f3f3f3f3f3f;
const ll mod = 998244353;
const int maxn = 1e5 + 5;using namespace std;int num[maxn] = {0};
double sum[maxn] = {0};typedef struct Node{int id;int num;double sum;
} node;bool cmp(node A, node B){if(fabs(A.sum - B.sum) < 1e-6){if(A.num == B.num) return A.id < B.id;      return A.num > B.num;}return A.sum > B.sum;
}node v[maxn];int main(){int n;cin >> n;for(int i = 1; i <= n; i++){int k;cin >> k;int n; double p;for(int j = 1; j <= k; j++){cin >> n >> p;num[n]++;sum[n] += p;sum[i] -= p;}}for(int i = 1; i <= n; i++){v[i].id = i;v[i].num = num[i];v[i].sum = sum[i];}sort(v+1, v+1+n, cmp);for(int i = 1; i <= n; i++) printf("%d %.2lf\n", v[i].id, v[i].sum/100);    return 0;
}

7-10 排座位 (25 分)

思路
并查集统计朋友关系(直接和间接),用二维数组记录直接的敌对关系,依次判断输出即可

AC代码

#include <bits/stdc++.h>
#include <vector>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <stack>
#define ll long long
#define chushi(a, b) memset(a, b, sizeof(a))
#define endl "\n"
const double eps = 1e-8;
const ll INF=0x3f3f3f3f3f3f3f3f;
const ll mod = 998244353;
const int maxn = 1e5 + 5;using namespace std;int v[105][105] = {0};int f[105];int find(int x){if(f[x] == x) return x;else return f[x] = find(f[x]);
}void join(int x, int y){int fx = find(x);int fy = find(y);if(fx != fy) f[fy] = fx;
}int main(){int n, m, k;cin >> n >> m >> k;for(int i = 1; i <= n; i++) f[i] = i;int x, y, flag;while(m--){cin >> x >> y >> flag;v[y][x] = v[x][y] = flag;if(flag == 1) join(x, y);}while(k--){cin >> x >> y;if(v[x][y] != -1 && find(x) == find(y)) cout << "No problem" << endl;else if(v[x][y] == -1 && find(x) == find(y)) cout << "OK but..." << endl;else if(v[x][y] == -1) cout << "No way" << endl;else cout << "OK" << endl;}return 0;
}

7-11 玩转二叉树 (25 分)

思路
由中序和前序建树,用后序遍历的顺序交换子树达到镜面对称,BFS层次输出

AC代码

#include <iostream>
#include <bits/stdc++.h>using namespace std;int a[55];  // 中序
int b[55];  // 前序typedef struct NOde{int data;int l;int r;
} node;node t[100000];
int cnt = 0;int build(int la, int ra, int lb, int rb){if(la > ra) return -1;int tmp = ++cnt;t[tmp].data = b[lb];int x = la;while(a[x] != b[lb]) x++;int len = x - la;t[tmp].l = build(la, x - 1, lb+1, lb + len);t[tmp].r = build(x + 1, ra, lb + len + 1, rb);return tmp;
}void DFS(int x){if(x == -1) return;DFS(t[x].l);DFS(t[x].r);swap(t[x].l, t[x].r);
}void BFS(int n){queue<node> qu;qu.push(t[1]);int num = 0;while(!qu.empty()){node x = qu.front();qu.pop();cout << x.data;if(++num == n) cout << endl;else cout << " ";if(x.l != -1) qu.push(t[x.l]);if(x.r != -1) qu.push(t[x.r]);}}int main(int argc, char** argv) {int n;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i <= n; i++) cin >> b[i];build(1, n, 1, n);DFS(1);BFS(n);return 0;
}

7-12 关于堆的判断 (25 分)

思路
根据题意模拟即可,注意处理输入

AC代码

#include <iostream>
#include <bits/stdc++.h>using namespace std;int a[1005];    void insert_(int i, int num){while(a[i] < a[i/2] && i != 1){swap(a[i], a[i/2]);i >>= 1;}return;
}int find(int x, int n){for(int i = 1; i <= n; i++){if(a[i] == x) return i;}return 0;
}int main(int argc, char** argv) {int n, m;cin >> n >> m;for(int i = 1; i <= n; i++){cin >> a[i];insert_(i, a[i]);}while(m--){int x;cin >> x;string s;cin >> s;if(s == "and"){int y;cin >> y;cin >> s; cin >> s;int fx = find(x, n);int fy = find(y, n);if(fx / 2 == fy / 2) cout << "T" << endl;else cout << "F" << endl;}else{cin >> s;if(s == "a"){cin >> s; cin >> s;int y;cin >> y;int fx = find(x, n);int fy = find(y, n);if(fx / 2 == fy) cout << "T" << endl;else cout << "F" << endl;}else{cin >> s;if(s == "root"){if(a[1] == x) cout << "T" << endl;else cout << "F" << endl;}else{cin >> s;int y;cin >> y;int fx = find(x, n);int fy = find(y, n);if(fy / 2 == fx) cout << "T" << endl;else cout << "F" << endl;}}}}return 0;
}

2016年天梯赛初赛题集(L1 - L2)相关推荐

  1. 天梯赛刷题小记 —— L1

    最近在重刷 天梯赛,浅浅记录一下,就不管简易程度了 感觉已经很久没有做题了qaq L1-002 打印沙漏 解题思路:循环结构 AC代码: #include <bits/stdc++.h> ...

  2. CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3

    PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...

  3. PAT 天梯赛真题集

    题目:L2-010 排座位 题意: 1. x与y是敌对关系: a)也有共同好友:OK but... b)无共同朋友:No way 2. x与y是朋友关系:No problem 3. x与y既不是朋友也 ...

  4. PTA 吃鱼还是吃肉 (天梯赛真题集)

    此处应有两张图片 题目要求: 国家给出了 8 岁男宝宝的标准身高为 130 厘米.标准体重为 27 公斤:8 岁女宝宝的标准身高为 129 厘米.标准体重为 25 公斤. 现在你要根据小宝宝的身高体重 ...

  5. 【2022团体程序设计天梯赛】GPLT2022,L1~L2部分(PTA,L1-081~L1-088,L2-041~L2-044)题解代码复盘

    文章目录 概要 **L1-081 今天我要赢** (5分) **L1-082 种钻石**(5分) **L1-083 谁能进图书馆**(10分) **L1-084 拯救外星人**(10分) **L1-0 ...

  6. 团体程序设计天梯赛真题(部分题解,持续更新)

    文章目录 天梯赛真题 L1-008 求整数段和(10分) 输入格式: 输出格式: 输入样例: 输出样例: 解题过程: L1-018 大笨钟(10分) 输入格式: 输出格式: 输入样例1: 输出样例1: ...

  7. 2021/4/24团队设计天梯赛L3题目集及部分题解

    2021/4/24团队设计天梯赛L3题目集及部分题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L3题目集 L3-01 森森旅游 (30 分) L3-02 还原文 ...

  8. 华为杯数学建模优秀论文_数学建模经典例题(2016年国赛B题与优秀论文)

    数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 相关推荐 数学建模经典例题(2000年国赛B题与解题思路) 数学建模经典例题(2001年国赛A题与优秀论文) 数学建模经典例题(2001 ...

  9. 第七届蓝桥杯 2016年省赛真题(Java 大学C组)

    蓝桥杯 2016年省赛真题(Java 大学C组) 第一题:有奖猜谜 第二题:煤球数目 第三题:平方怪圈 第四题:骰子游戏 第五题:分小组 第六题:凑算式 第七题:搭积木 第八题:冰雹数 第九题:四平方 ...

最新文章

  1. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
  2. 硬核!如何全面系统地自学 Java ?(必看)
  3. 约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
  4. webservice入门程序学习中经验总结
  5. HTML基础_Day02
  6. Linux 下从命令行打开pdf文件和html文件的命令
  7. 如何使用postman访问若依后台权限功能
  8. Python自动化开发学习22-Django下(Form)
  9. Haven Protocol为公共测试网xAsset推出新浏览器
  10. 关于跨域获取cookie问题的解决
  11. 打log的方式检查程序里面的问题 及示例代码 详解
  12. Win11用户好消息 影响win11性能运行的竟是它,关闭可提升性能
  13. 基于 SPI 的增强式插件框架设计
  14. 《三国演义》人物出场实例详解
  15. Exploiting Unintended Feature Leakage in Collaborative Learning 阅读心得
  16. FUNCTION count does not exist
  17. 软件开发公司怎么选择比较好?-链环科技
  18. Linux上的文件类型与默认图标
  19. msvc2017配置qt5.12.8 x86和x64库版本切换
  20. 快慢指针(Java版)

热门文章

  1. python中的逻辑量有什么_python小白入门须知的9个基础知识丨纯干货
  2. 笔记本计算机配置型号,笔记本怎么看配置,教您笔记本电脑配置怎么看
  3. 并发编程(七)好用的线程池ThreadPoolExecutor
  4. lte盲重定向_TD-LTE网络基于PS业务的重定向过程研究
  5. 巴菲特午餐终局谜题何时揭晓,中标者是不是孙宇晨?
  6. 天龙八部TLBB搭建(四)游戏端和补丁及上传CentOS修改篇
  7. 网管型工业交换机冗余功能介绍
  8. android培训总结范文,android开发培训心得总结
  9. 数学建模速成! 两小时零基础入门 MATLAB 教程(一)—— Matlab常用操作和基本语法
  10. 北京大学推免2020计算机,《北京大学2020年接收外校推免生分析报告(一)》——哪些学校更受青睐?...