SCAU Individual Contest #3(持续更新)

来源:互联网 发布:姚明新秀赛季数据 编辑:程序博客网 时间:2024/05/03 20:02

A   A题规律题,题意:讲了某个同学要去和女生约会,每天有一种新约法,但是相邻两天只能改变当中的一个值,问你第几天的约法。其实思路就和加减一样,比如7就可以等于4+2+1,这里选取2的n次方作为减数,因为2的n次方是有规律的,如:2(11),4(110),8(1100),然后加法不进位,7(100)=4(110)+2(11)+1(1)=(1^0^0)(1^1^0)(0^1^1)  复杂度:O(log(n))


B

C C题线段树 题意:给你一组数字,问你对于存在一个j使得前j中,任何相同数字的数量+k恒≥第j个数字的数量,让你求这个j的最大值。思路:用线段树维护区间的相同数字的最小个数,然后每加进一个判断一个。复杂度:O(nlogn)


D  D题DFS(搜索题) 题意:给你2*n个字符串,让你找出n个字符串能凑成n*n的矩阵,矩阵中s[i][j]=s[j][i]。一开始在想怎么优化N的阶乘的复杂度才发现自己想多了,然后在剩下20分钟终于明白是搜索题。思路:直接暴力搜索两次就可以得到答案了。


E F题模拟题 题意:有一个机器人,给你他行动的方向以及步数,问你如何最少改变他的方向或步数使得它能回到原点。(改变步数需要消耗时间,改变方向不需要)思路:直接模拟,但是注意到题目要求最多500步,250个方向相当于如果你要开数组,需要开500*250*4的空间,需要使用4^500的复杂度,所以需要用到别的数据结构bitset。然后上下分情况考虑,然后扫描所有的路径,如果他能回到原点必定b[505*505]=1。如果不是,那么离他最近的一定就是需要改变的步数。答案就是这一个。当然,你要扫向上下和左右两次。


F  F题图论(Tarjan算法求桥) 题意:给你N座城市,M条有向路,让你求出那些路去掉会使连通图变成不连通。思路:Tarjan算法(网上有教程)算出到达城市x的最少步数low(与x相连的到达x的最小步数)以及初始步数dfn(遍历一次到达x所需的步数),如果low[x]=dfn[x],表示此路不可去,因为到达这里最短的步数和初始步数一样表示这条路就是初始路径,所以不可以去掉,然后统计一下输出就可以了。复杂度(o(m))。


G G题线段树+二分查找 题意:给你两个数组, 然后有m个查询,每一查询问你在L~R的范围内,找出max(0,A1*C-B1*D)+max(A2*C-B2*D,0)+...+max(AN*C-BN*D)的值。思路:利用线段树维护每一个区间的斜率以及A和B的总和,然后用二分查找找出在区间内满足条件的最大的左端点,然后返回输出即可。由于比较复杂,我还是重新写一篇介绍思路。复杂度o(mlongn+n)(有时候不能小看o(logn)的复杂度,乘起来也会超时的)


I   I题规律题。题意:求所给字符串最大的非回文串。思路:判断字符串是否为回文串,是在判断是不是每一个字符都相同,是的话输出-1,不是的话输出n(字符串长度)-1,若不是回文串,直接输出n就好 复杂度(o(n/2))


总结:该掌握的没掌握好,代码能力太差,题做太少。

0 0
原创粉丝点击