首页 > 技术文章 > 2018 7 20考试

ztz11 2018-07-20 21:51 原文

T1:

Black Rock Shooter

1.题目大意:

在人气动漫Black  Rock  shooter 中,当加贺里对麻陶 说出了“滚回去“以后,与此同时,在另一个心灵世界里,BRS 也遭到了敌人的攻击。此时,一共有n 个攻击排成一行朝着她飞了过来,每个攻击有一个伤害值。并且每个攻击伤害可能随时变化。BRS的攻击可以打掉一段连续的攻击。现在,给出m段攻击,求出BRS最多可以打掉此段里多少的伤害(就是说从给定一段里选择连续一段打掉)。伤害从1到n编号。

2.输入格式:

第一行2个整数:n,m第二行n个数:第i个数代表第i个攻击第3到2+m行:每行三个数k,x,y。若k=1,x,y代表查询的区间。若k=2,代表第x个攻击伤害改为了y所有的伤害值绝对值<=1000

3.输出格式:

对于每次k=1,输出一个整数代表最大值

4.数据范围:

对于20%的数据:n,m<=100
对于60%的数据:n,m<=3000
对于100%的数据:n<=500000,m<=100000

思路:

这道题我不多说了,出门左转GSS3不谢

T2:

Fy's dota2

1.题目大意

Fy觉得自己玩cf,lol这种高端游戏已经够厉害了,于是他决定去玩dota2.
结果fy的鼠标右键坏了,所以他就等到2250买了把闪烁匕首,用跳刀前进,准备去送泉水。
但是fy一次最多前进k的距离,泉水离fy现在的距离是n。
Fy想知道他到泉水的方案数。

2.输入格式:

第一行2个整数:k,n

3.输出格式:

一行1个整数:代表答案对7777777取膜的结果

思路:

这道题其实首先我们可以写出一个暴力DP方程

for(rii=0;i<=n-1;i++)
{
    for(rij=1;j<=k;j++)
    {
        if(j+i<=n)
        {
            dp[j+i]+=dp[i];
        }
    }
}

但O(n*k)的复杂度难以接受

怎么办?

我们知道,斐波那契数列是可以用矩阵快速幂优化的

其递推公式为F[i]=F[i-1]+F[I-2]

那我们对符合该式模式的其他递推式也进行优化即可

T3:

Olddriver’s books

1.题目大意:

Olddriver的书多的吓人,什么算法导论,组合数学英文版(orz)。。。。。。
他把n本书都放在身后的桌子上,每本书有一定的面积,并且书可以覆盖,求n本书覆盖桌面的面积

2.输入格式:

输入第一行为一个数N,表示书的数量。
下面N行,每行四个整数,分别表示每个书的左下角和右上角的坐标。

3.输出格式:

输出只有一行,一个整数,表示图形的面积。

思路:

正解离散化扫描线,不多说了

这里我想讲一下后来我发现的另一种算法:合并正方形

如果两个正方形不相交,我们直接跳过

但如果相交呢?

我们来看图:

我们可以将这个矩形变成一个大矩形

重复的减去,新加入部分也减去

(减去的是图中蓝色部分)

这样我们就得到了一个新的矩形

用这个新的矩形继续匹配

最坏情况复杂度为O(n^3)

嗯,n才100

过了

 

推荐阅读