2016年天梯赛初赛题集(L1 - L2)
注意使用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)相关推荐
- 天梯赛刷题小记 —— L1
最近在重刷 天梯赛,浅浅记录一下,就不管简易程度了 感觉已经很久没有做题了qaq L1-002 打印沙漏 解题思路:循环结构 AC代码: #include <bits/stdc++.h> ...
- CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3
PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...
- PAT 天梯赛真题集
题目:L2-010 排座位 题意: 1. x与y是敌对关系: a)也有共同好友:OK but... b)无共同朋友:No way 2. x与y是朋友关系:No problem 3. x与y既不是朋友也 ...
- PTA 吃鱼还是吃肉 (天梯赛真题集)
此处应有两张图片 题目要求: 国家给出了 8 岁男宝宝的标准身高为 130 厘米.标准体重为 27 公斤:8 岁女宝宝的标准身高为 129 厘米.标准体重为 25 公斤. 现在你要根据小宝宝的身高体重 ...
- 【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 ...
- 团体程序设计天梯赛真题(部分题解,持续更新)
文章目录 天梯赛真题 L1-008 求整数段和(10分) 输入格式: 输出格式: 输入样例: 输出样例: 解题过程: L1-018 大笨钟(10分) 输入格式: 输出格式: 输入样例1: 输出样例1: ...
- 2021/4/24团队设计天梯赛L3题目集及部分题解
2021/4/24团队设计天梯赛L3题目集及部分题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L3题目集 L3-01 森森旅游 (30 分) L3-02 还原文 ...
- 华为杯数学建模优秀论文_数学建模经典例题(2016年国赛B题与优秀论文)
数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 相关推荐 数学建模经典例题(2000年国赛B题与解题思路) 数学建模经典例题(2001年国赛A题与优秀论文) 数学建模经典例题(2001 ...
- 第七届蓝桥杯 2016年省赛真题(Java 大学C组)
蓝桥杯 2016年省赛真题(Java 大学C组) 第一题:有奖猜谜 第二题:煤球数目 第三题:平方怪圈 第四题:骰子游戏 第五题:分小组 第六题:凑算式 第七题:搭积木 第八题:冰雹数 第九题:四平方 ...
最新文章
- 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
- 硬核!如何全面系统地自学 Java ?(必看)
- 约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
- webservice入门程序学习中经验总结
- HTML基础_Day02
- Linux 下从命令行打开pdf文件和html文件的命令
- 如何使用postman访问若依后台权限功能
- Python自动化开发学习22-Django下(Form)
- Haven Protocol为公共测试网xAsset推出新浏览器
- 关于跨域获取cookie问题的解决
- 打log的方式检查程序里面的问题 及示例代码 详解
- Win11用户好消息 影响win11性能运行的竟是它,关闭可提升性能
- 基于 SPI 的增强式插件框架设计
- 《三国演义》人物出场实例详解
- Exploiting Unintended Feature Leakage in Collaborative Learning 阅读心得
- FUNCTION count does not exist
- 软件开发公司怎么选择比较好?-链环科技
- Linux上的文件类型与默认图标
- msvc2017配置qt5.12.8 x86和x64库版本切换
- 快慢指针(Java版)
热门文章
- python中的逻辑量有什么_python小白入门须知的9个基础知识丨纯干货
- 笔记本计算机配置型号,笔记本怎么看配置,教您笔记本电脑配置怎么看
- 并发编程(七)好用的线程池ThreadPoolExecutor
- lte盲重定向_TD-LTE网络基于PS业务的重定向过程研究
- 巴菲特午餐终局谜题何时揭晓,中标者是不是孙宇晨?
- 天龙八部TLBB搭建(四)游戏端和补丁及上传CentOS修改篇
- 网管型工业交换机冗余功能介绍
- android培训总结范文,android开发培训心得总结
- 数学建模速成! 两小时零基础入门 MATLAB 教程(一)—— Matlab常用操作和基本语法
- 北京大学推免2020计算机,《北京大学2020年接收外校推免生分析报告(一)》——哪些学校更受青睐?...