摘要:
队长:zwz 队内大佬:cyj 饮水机管理员:cty 获奖记录: 2021ICPC济南:Ag 2021CCPC桂林:Cu 2021CCPC湘潭邀请赛: Ag 2021浙江省赛:Ag 2020浙江省赛:Cu 2020CCPC绵阳:Cu 2020团体设计天梯赛:Ag 2020ICPC上海:Fe(无Fuc 阅读全文
摘要:
2021PAT秋季甲级考试题解 1001 Arrays and Linked Lists 题意 Let's design a data structure A that combines arrays and linked lists as the following: At the very be 阅读全文
摘要:
2022.6.22更新:据学妹反应,19级多门考试内容进行大幅度更改 本文有较大过拟合可能性! 宁大的期末考试比较考察基础,有了这份攻略,应该对期末考试有帮助,希望大家少卷卷,有效复习。 首先要说明的是,虽然有可能是同一个老师,但是试卷的组成或许会不一样,每年的情况也在变化,我在csdn上看到了15 阅读全文
摘要:
这道题我们肯定敏锐的观察到题目的一个特殊性质 只有一个数是另一个数的二进制前缀才能连边,这个性质肯定要用到,等会我们来思考。 首先是暴力算法,假设要知道两两点的最短路,最暴力的想法就是求floyd,这个太夸张了,我们显然可以放弃掉。 之后就是对于每个点求迪杰斯特拉,这个算法做一次复杂度过关,但是做多 阅读全文
摘要:
对于这题,观察到数据范围,首先观察出第一个性质 最后只需要找到两个和大于n的,减去这两个值后,k就可以通过任意选择组合而来。 如果k的数据范围很小,那么我们可以直接背包求取答案。 现在k有1e9,那就需要其他的性质。 又因为我们观察到数是连续的,因此假如当时我们有一个效率最高的数,也就是a[i]/i 阅读全文
摘要:
假设是一棵树,答案是n*(n-1)/2 这是因为任意两点间的路只有一条。 如果全部点都在一个环上,那么答案是n*(n-1),因为任意两点都有两种情况 在考虑两个极端的情况,我们可以发现,主要的变数就是通过了环,任何两个能够通过环到达的点都是存在两条路径的 因此,我们考虑环上每个点的子树大小,这下面的 阅读全文
摘要:
这道题的初始思路可以看的出来 是一道分治的思想,这种题往往枚举端点计算贡献 而这一题因为有个最大值的限制,所以我们考虑维护每个点作为最大值的答案 那么一般来说,都是在区间内,枚举首位,然后二分答案,但是这样复杂度会退化,例如一个很长的递增子序列 因此我们考虑启发式合并,前缀和后缀哪边小枚举哪边,这样 阅读全文
摘要:
要选出价值最大的链且不相交。 比较朴素的想法就是树dp,对于一个子树,如果这个点在一条链上,我们可以考虑是否选这个链,然后把这条链上的点单独考虑,对于剩下的子树直接求和即可 但是由于两个点不一定在同一条到根的路径上,因此我们对于每条链,都把他存到lca的位置上再考虑 画一下图,我们可以发现只要在当前 阅读全文
摘要:
显然,根据题目给定的数据,结果是一些森林 对于每个森林都可以取一些数使得答案最大 又因为必须到根都取掉,我们设计状态为f[i][j],表示以i为根,取j个的答案 对于树上跑一个01背包,然后对于整个森林跑一下分组背包 #include<bits/stdc++.h> using namespace s 阅读全文
摘要:
转化题目,题目要求的是K级祖先,我们可以对于每个询问先跳到祖先,那么就是求对于这个祖先,depth[u]+k的个数是多少个,然后-1就是答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair 阅读全文
摘要:
考虑倒序dp 设计状态f[i]为到末尾的最小不存在子序列。 首先如果后面没有某个字母,那么答案就是1 不然的话必然要在首位加上一个字母。 考虑枚举所有情况,也就是第一个字母填什么,这样就是全部答案。 如果直接枚举后面每个位置更新,复杂度太高,我们想到维护一个后缀,表示每个字母在i和之后出现的第一个位 阅读全文