ACM训练日记—8月15日

         一天的训练结束了,到现在还真感到有些疲惫。总结这一天上午我还在做单调队列的题,因为我比较慢,感觉单调队列到现在还是掌握的不扎实,没有搜索和图论那么扎实,写单调队列的代码时总有各种问题,对单调栈的应用也不熟练,感觉自己还要对这块进行练习。明天我也要继续做单调队列,把做过的题重做一遍。今天下午还进行了一个小训练赛,感觉十分充实,主要都是上一阶段我们所练习的知识点。但同时感觉自己能力还欠缺,感觉自己也还差的远呐。

         第一道题是feel good 就是给一个一维数组,找出一个连续区间,使得该区间上数的和与最小值的乘积最大,其实就是按照数组中每一个数找,找到以该位置数是最小数,向左右两边扩展,可以扩展的最大长度,加和求最大值,其中还运用了一点点动态规划的东西    if(node[i]>node[j]){s[i]=j+1;break;}     else j=s[j]-1;//如果j位置数比i大,那么可以直接找到j位置上的数可向左扩展的最远距离开始寻找。

       第二个题其实和昨天做的两个题相似Terrible Sets,就是矩形有了不同的宽度,这是是利用单调队列,建立单增,如遇小于栈顶的元素,累加宽度,算出累加的宽度与栈顶元素高形成的面积,抛掉栈顶继续比较。最后算出所有就得所含最大矩形面积了。

      今天的训练赛,第一题,是广搜题,,给一个矩阵,要求找出从2到4再到3的最短路径长度,我的第一反应就是要进行两次广搜,找出所有2到所有4与3到所有4的的最短长度,最后找到4的坐标两广搜到的家和最小就行了。

      E题就是给了一个无向图,找出最大生成树,这道题可以把图中所有路径权值变成负数,从而转化为找最小生成树,就是prim算法。

      B题是给了一张图,求最短路径,这道题因为二维数组不大,没想到弗洛伊德算法也能过,不过要注意一个坑,题目中对于连接同样两点的无向路径有多条,保留最小的。

      还有F题,给一个数,求有多少中分解方法,可以把它用2的倍数分解为加和,我刚开始用搜索超时,最后看了题解才明白,如果是n是奇数,那么与n-1相比就相差1,所以分解数量一样,如果是偶数,那么他可被2整除,也可以被1减两种变化。这一块我还是要再看看有关资料吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值