PAT做题记录(更新完成)
老师给报了一个GPLT(CCCC)玩玩。。。看了一下测评方式,感觉已经和时代脱节太多了。。。现在时限都卡进ms了吗。。。赛制也是奇奇怪怪。。。两年没认真做过题的退役选手赶紧来康复一波。。。顺便更新一下博客,再不更新就要长草了。。。
接下来是一句话题解。。。
团体程序设计天梯赛-练习集
现在做了几道:
80
这网站有毒吧。。。绿色是WA,红色是AC。。。
L1-001~L1-005 水
L1-006 直接从2开始暴力枚举,判定是否可行即可,注意素数情况,以及因子可以重复出现。
L1-007~L1-008 水
L1-009 直接通分,最后约分就可以了,注意结果为0的情况
L1-010 sort
L1-011 直接对b串中的字符hash,用map即可
L1-012~L1-019 水
L1-020 直接用两个桶记录就好了,读入时直接标记为m-1
L1-021~L1-027 水
L1-028 看数据范围,还以为要用robin-miller虽然我并不会写,其实直接暴力判断就好了,连筛法都不用写。。。
L1-029~L1-038 水
L1-039 先正着放到数组里面,再倒着输出就好了
L1-040~L1-042 水
L1-043 注意一下细节,直接套个桶就好了
L1-044~L1-048 水
一档题就结束了,总体来说都比较基础,难度不是很大。
L2-001 最短路计数,再套一个统计最大值,不需要担心一个点会被重复计数,因为重复计数的情况的话路径会出现一个环,显然正权值图中的最短路不可能有环,最短路计数也是有一点技巧的,发现网上大部分关于SPFA的最短路计数代码都是错的,这个另写一个博客吧,一句话写不下。。。
L2-002 直接把链表读进来,按地址排个序,然后二分查找就好了,比较值的话既可以在之前做二分查找,也可以建个桶。
L2-003 部分背包问题,直接贪心就好了。
L2-004 直接照着定义递归就好了,突然意识到二叉树具有完美的递归性质,所以对于二叉树的题目要往递归的方向思考。
L2-005 先预处理一下,对每个集合都排个序,再去个重,然后每次询问对两个集合做归并即可。
L2-006 直接递归,想了一个鬼畜做法,一直有一个数据wa,但是不知道是哪里出错了。。。
L2-007 感觉直接并查集维护就好了,但是代码还没调出来。。。明天再调。。。原来是没有考虑编号为0的情况。。。
L2-008 直接manacher
(L2的超级大模拟好多啊!细节还多,感觉要写死了)。。。。
L2-009 直接模拟
L2-010 开始想的太多,以为要建立多个并查集,其实只需要维护是否是朋友就好了,然后二维数组保存关系,注意敌对关系不具有传递性!题面中说得十分隐晦。
L2-011 直接递归就好了,数组开小了,导致一直wa,而且发现这种题不能用常用的方法保存二叉树,需要存一个点,记录他的左儿子和右儿子,否则退化成链的时候数组一定会越界。
L2-013 直接并查集,倒序加边,注意不是所有的点都被打掉,要预先处理不受影响的点和边。
L2-014 直接维护一个单调递增的数列就好了,类似于lis的思路。
L2-015 水。
L2-016 刚开始看题还以为是lca,后来一想,不是树啊。。。其实暴力搜索就好了,代码明天写好了,晚上不宜写搜索。。。
L2-017 水。
L2-018 超级大模拟。
L2-019 两个名单排个序,然后做归并就好了,c++的string真好用,一本满足。。。
L2-020 直接建个树,做一遍dfs就好。
L2-021 排序就好了。
L2-022 直接读进来,排序,二分查找就好了,注意会有无效节点(看了题解才知道。。。略有点坑
L2-023 直接暴力枚举就好了,颜色数要严格等于k。。。
L2-024 并查集。
二档题就全部结束了,思路都比较简单,主要是模拟题,对细节要求比较高,还有几道搜索题,16和18因为太过繁琐,只是口头AC了。。。
L3-001 感觉三档题难度不大啊。。。。01背包+记录路径。。。题意实际是找排序后字典序最小的方案。。。连记录路径都不会打了,干脆退学吧(捂脸熊。。。
L3-002 直接维护一个栈和平衡树,用平衡树查询rank为(n+1)*n/2的值就好了,开始想了一个二分查找+线段树单点修改区间查询的鬼畜做法。。。
L3-003 直接并查集
L3-004 并查集维护联通性,再加个记录大小,一层一层记录就好了
L3-005 多次最短路就好了,不过有个点过不去,不知道为什么。。。样例是四舍五入,结果测试的时候要向下取整。。。
L3-007 两个边权的最短路,同时维护一下就好了。。。应该要先更新time,再更新了length。。。
L3-009 一个点可去,当且仅当它两边的点高于它,维护一个栈就好了
L3-015 搜索+剪枝
接下来是没有写代码的题:
L3-006 平面几何,写了一发,果然WA了。。。就是各种判断,码量巨大。。。
L3-008 直接做个bfs就好了。。。
L3-010,L3-016 应该是直接模拟建树,判断一下就好了
L3-011 就是一个多边权最短路,再记录一个最短路条数和记录路径就好了。。。
L3-012 感觉这题贪心一下,或者用单调栈维护一下相邻两点之间的斜率就好了吧。。。
L3-013 物理题,直接模拟就好了,虽然我物理学的不怎么样。。。
L3-014 感觉就是一个spfa啊,只不过要维护的东西比较多
L3-017 二分答案,用最短路判定看错题了。。。线段树
L3-018 贪心+线段树(我有时间再看看这题)。。。