L2第一题:包装机
大体题意是给筐和轨道的容量,然后经过一系列操作后输出流水线上的物品。轨道的操作就像队列,筐的操作符合栈的特性。理解题之后我们就知道了,这是一道模拟送分题,开始加速操作他把。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stack>using namespace std;const int N = 110, M = 1010;int n, m, S;
queue<char> q[N];
stack<char> stk;int main()
{scanf("%d%d%d", &n, &m, &S);char str[M];for (int i = 1; i <= n; i ++ ){scanf("%s", str);for (int j = 0; j < m; j ++ )q[i].push(str[j]);}int x;while (scanf("%d", &x), x != -1){if (!x){if (stk.size()){printf("%c", stk.top());stk.pop();}}else{if (q[x].size()){if (stk.size() == S){printf("%c", stk.top());stk.pop();}stk.push(q[x].front());q[x].pop();}}}return 0;
}

然后来到第二题病毒溯源
一看题病毒能产生一代二代变异,求最长的链子,这不就是让求树里面最长的一条路径m。一看输入,边也没权值,用二维数组就行,也可以练练邻接表

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int e[N],ne[N],h[N],idx;
int n;
int son[N];
bool st[N];
void add(int a, int b)  // 添加一条边a->b
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
int dfs (int t){int res = 0;son[t] = -1;for (int i = h[t];~i;i=ne[i]){int x = e[i];int y = dfs (x);if (y>res) {res = y,son[t]=x;}else if (y==res){son[t] = min(son[t],x);}}return res+1;
}
int main()
{memset(h, -1, sizeof h);int b,c;scanf("%d", &n);for (int i = 0; i < n; i ++ ){scanf("%d", &c);for (int j = 0; j < c; j ++ ){scanf("%d", &b);add(i, b);st[b] = true;}}int root = 0;while(st[root]) root++;printf ("%d\n",dfs(root));printf ("%d",root);while (son[root]!=-1){root = son[root];printf (" %d",root);}return 0;
}

第三题清点代码库,听yxc大佬说这就是STL库的应用,直接上代码把,map、pair、,咱用的也不行。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>#define x first
#define y secondusing namespace std;const int N = 10010;int n, m;
map<vector<int>, int> cnt;
vector<pair<int, vector<int>>> ans;int main()
{scanf("%d%d", &n, &m);for (int i = 0; i < n; i ++ ){vector<int> line;for (int j = 0; j < m; j ++ ){int x;scanf("%d", &x);line.push_back(x);}cnt[line] ++ ;}for (auto& p: cnt) ans.push_back({-p.y, p.x});sort(ans.begin(), ans.end());printf("%d\n", cnt.size());for (auto& p: ans){printf("%d", -p.x);for (auto x: p.y)printf(" %d", x);puts("");}return 0;
}

第四题哲哲打游戏,这个题可是太有意思了,题目好长一大堆,但是题目与我们平常打的单机游戏相似,打一会不想打了,就存档,这样下次玩就能读档接着上次玩,不用再重新开头打了。根据输入,可以看出出来这是一道图的题,然后模拟所有操作,输出存档的剧情点编号,和最终的剧情编号就行了。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>using namespace std;const int N = 100010, M = 110;int n, m;
vector<int> g[N];   //用邻接表存储
int record[M];int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ){int cnt;scanf("%d", &cnt);while (cnt -- ){int x;scanf("%d", &x);g[i].push_back(x);}}int p = 1;while (m -- ){int a, b;scanf("%d%d", &a, &b);if (a == 0){p = g[p][b - 1];}else if (a == 1){record[b] = p;printf("%d\n", p);}else{p = record[b];}}printf("%d\n", p);return 0;
}```这几道题就这样弄完了,感觉是不是考了基础的算法,L3的最后一题才是BOSS。

2021CCCC天梯赛L2题解相关推荐

  1. 2021天梯赛L2题解全集

    L2-037 包装机 (25 分) 其实就是个模拟,按照题目意思写下去吧,也不知道为什么比赛的时候一直只能拿20分(用char数组+ int变量模拟栈) 赛后直接用栈写的一发满分就很奇怪...主要是题 ...

  2. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  3. 【GPLT】 2021CCCC天梯赛题解

    更好的阅读体验:GPLT 2021CCCC天梯赛题解 L1-人与神 解题思路 直接输出To iterate is human, to recurse divine.即可 #include <io ...

  4. 团体程序设计天梯赛-L2组

    团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...

  5. 团体程序设计天梯赛 L2 题目合集

    前言 发现自己还能再参加一次天梯赛,在高兴之余,决定把在赛前将所有的天梯赛真题过一遍,希望自己可以取得理想的成绩.目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目. 本来想 L2 的题目都写个 ...

  6. cccc-gplt 团体程序设计天梯赛JAVA题解

    1. 前言 大多是想用java解的,有些题java会超时就换成了c++ Github 天梯赛 2. 目录 编号 标题 题解 分类 L1-001 Hello, World Java 水题 L1-002 ...

  7. 【L2-020 功夫传人】天梯赛L2系列详解

    天梯赛L2-020 功夫传人 题目详情: 思路: 这个题目的看着就感觉需要深搜一下,不妨将样例画出来,思路就突然涌来了.很明显的一道深搜的题目: 题目刚开始输入的一行信息整体的信息:宗门人数,祖师爷功 ...

  8. 【L2-022 重排链表】天梯赛L2系列详细解答

    天梯赛L2-022 重排链表 题目详情: 输入样例: 00100 6 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 6823 ...

  9. 【L2-040 哲哲打游戏】天梯赛L2题集

    天梯赛L2-40 题目详情: 思路: 先来一张我自己的手写解析图: (字比较丑,不过呢没有对样例推到完整,这种东西最好自己推一遍哈) 我感觉想清楚这三个问题就很有思路啦: 1.开始地址是什么? 2.如 ...

最新文章

  1. 不同数据类型的处理函数(一)
  2. Dubbo 3.0 预览版解读,6到飞起~
  3. ajax 实时进度_如何做好项目进度管理?
  4. Linux上怎样停止服务(jar包)、查看进程路径、关闭指定端口
  5. 你真的会使用assert吗?
  6. URL中#号(井号)的作用
  7. mac vim python3_VIM学习笔记 编译源码(Compile Code)-Python
  8. ubuntu按方向键出现abcd_Ubuntu Vi方向键[A [B [C [D问题解决
  9. 计算机网络中ping命令的使用方法,ping命令的基础使用技巧
  10. qwtplot读取tid数据并绘图
  11. abab的四字成语_abab式的四字词语
  12. UE4 蓝图通信:接口调用
  13. Crosses and Crosses POJ - 3537 (博弈)
  14. Codevs 3100 蜗牛的旅行
  15. 想加薪怎么和领导谈?学会这四招轻松涨薪
  16. 转战物联网·基础篇10-物联网架构硬件端的特点及行业应用,对初创项目的选型建议
  17. python 判断是否为中文
  18. java关注列表_如何从一个Instagram帐户中获取关注者列表?
  19. 线上测评图形题技巧二
  20. 边缘计算初探:什么是边缘计算,它能做什么?

热门文章

  1. jq 设置样式display
  2. centos 7 查看内网ip和外网ip
  3. proteus8.12闪退以及其他版本闪退的通用解决方法,亲测有效
  4. Python3 tkinter 使用图片作为背景,并在该背景上加输入框,按钮
  5. 数字孪生水电站,三维组态助力发电流程优化
  6. Spring核心技术(八)——Spring自动装载的注解
  7. request to https://registry.yarnpkg.com/XXX, reason: getaddrinfo EAI_AGAIN regis
  8. Java NIO epoll 空转问题 + Netty 解决方法
  9. rz=====================
  10. 谷歌员工的“腐败”生活