在线评测:
http://codevs.cn/problem/3288/
整体思路:
首先我们看一下,题面,用最小的步数把积木建成,再一看数据,显然是贪心才能AC,积木怎么搭最优,很多人的思路一下子就被引到了每一行每一次尽可能多放积木块这个思路上了,然后就跑偏了。后来想了想,横着想想不通,就竖着想,我们考虑一下,如果右侧的那一列比左侧的这一列高,显然我们需要放一些积木来满足右侧的高度,而如果右侧比左侧低,我们可以忽略,什么也不做,我们仔细思考一下,这样做我们只是确定在高出情况下高处的排要从这一列放写积木,并没有确定长度,所以没有后效性。所以我们可以这样来贪心。
失误之处:
开始被题面勾引到了错误的思路上,好在自己及时变通,换个角度思考,解决了问题。
体会心得:
无论是NOIP的T1还是T3都不会是毫无难度,T1没有立即想出来不要慌,冷静想想,T1不会太难,深入的想了许久还没想出,一定是方向错了,对于思路转变不要犹豫,考场上时间就是金钱。
AC代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <cstdio>
using namespace std;
int n,tp,pre = 0,ans;
int main()
{
scanf(
"%d"
,&n);
for
(int i = 1;i <= n;i++)
{
scanf(
"%d"
,&tp);
if
(tp >= pre) ans += tp - pre,pre = tp;
else
pre = tp;
}
printf(
"%d\n"
,ans);
}
|