zoukankan      html  css  js  c++  java
  • 2016.7.12.第28套测试题(2013noip题D2)

    block:

    此题较为简单,正解就是差分数列。有学神用了三行,录如下:

    for(int i=1;i<=n;i++)

    {cin>>h[i];

    if(h[i]>h[i-1]) sum+=h[i]-h[i-1];}

    我个人的方法与学神的方法思路是一样的,只说他求的是大的减小的,我求小的减大的

    思路如图:

    可知所需累计数只用公共部分+每一连续上升序列的最大值减去公共部分的和+最后一个高度减去公共部分。可以想象成修房子,修一栋1楼的,可以跟着2楼的一起修。

    flower:

    最开始想的找拐点,结果有两组没有过。百思不得其解,最后发现有两种特殊情况不能将其区别:

    比如你写a[i]>a[i+1]&&a[i]>a[i-1]看起来好像是对的,并且解决了情况1,但遇到情况2,就挂了。

    最后的解决办法是单独用一个f==1(前一段斜率为负)或0(前一段斜率为正)或-1(初始态)当然,这里的前一段并不直接是说真的前一段,而是说上一个拐点的前一段。这个样子就可以解决掉情况2了。

    sure,你可以用dp。

    puzzle:

    纯BFS的70,剩下30卡时间

    正解是先BFS完所有空格挨着动点的所有情况,并保存,然后用SPFA。

  • 相关阅读:
    《互联网时代》第三集·能量
    《互联网时代》第二集·浪潮
    java 基础类库之 SysFun
    java 基础类库之 SQLFun
    java 基础类库之 FormatFun
    Java 之 JDBC
    WepE
    MySql学习笔记
    Oracle学习笔记——点滴汇总
    Linux学习笔记——基于鸟哥的Linux私房菜
  • 原文地址:https://www.cnblogs.com/fisch/p/5665042.html
Copyright © 2011-2022 走看看