10.27考试总结

Posted summer20020929

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.27考试总结相关的知识,希望对你有一定的参考价值。

我要的幸福

题意是找出从1,1到n,m的一条路,有障碍不能走,只能走右边或者下边,每次走一步,求字典序最小方案

这道题当时想着用深搜结果麻烦了,而且答案错误。。。

题解:从终点开始向左边或者上边走,找出所有不能走的点,打上标记

注意vis[i][i]=vis[i+1][j]|vis[i][j+1],异或是有一则一,就是有能到达它的点,他就能走。如果周围都是0那他也不能走

再直接从1,1开始走,贪心地选取右边、下边的中的最小值,依次输出就是字典序最小值了

i&(1<<k)是看i的第k位是什么

1^(1<<k)是改变i的第k位

 

ksum

求一个序列前k大的子序列和,数据范围十分大

本来可以用线段树做如果数据小的话

enmmm线段树不会写蛤蛤

技术分享图片
void Add(int x, long long val)
    {
        for(; x <= n; x += lowbit(x))   tree[x] += val;
    }

long long Query(int x)
    {
        long long ret = 0;
        for(;x ; x-= lowbit(x)) ret += tree[x];
        return ret;
    }
View Code

所以用我奇特的过点法过掉两个点得20分蛤蛤

知识漏洞很大

题解:由于是正整数组成,一个序列一定比他的子序列的和大,而且一个序列l,r可以由l-1,r或者l,r+1得到

那么用堆来维护,记录前缀和,先把前缀和放进优先队列

这个优先队列是一个结构体类型的,里面存放了这个区间的左端点,右端点,区间和

还有重载bool operator < (const Node & x,const Node  &y){

return x.sum>y.sum>

}用来排序

然后每当拿出堆顶的Node,就要把他的变形放回去,作为统一的不要出现重复,可以就把左端点加1,前缀和相应减去

 

奶牛喝水专用牛棚

差分和线段树都可以

差分就是在一个区间的修改次数比较多的时候派上用场

在L端加上修改值,在R+1端减去修改值,然后计算L到R的修改值的前缀和,再与原数组对应位置相加

emmmm劳资还是没懂,为什么这道题要用差分?????????????????

 

以上是关于10.27考试总结的主要内容,如果未能解决你的问题,请参考以下文章

10.27 考试

第七周(10.27-11.03)----补交第六周(10.20-26)每周例行报告

练习10.27|大数据Hive相关笔试面试题目

10.27作业

第七周PSP(10.27-11.03)

关于PJ 10.27