2016.8.12
考试思路:
T1
一看到题目就想到了深搜,但是想想应该会错,于是先跳过,然后到后面的时候,实在想不出其它方法,只好加了一些优化,但由于时间问题,没想出更好的优化,只拿了40分。
T2
一开始以为只能回去一次,可到后面理解透题目才明白,是可以回去很多次的,然后我就一直在想用动态规划的方法,虽然知道了动态转移方程,但我的时间循环放在里面了,于是错了。
T3
没有想到方法,于是弃了,现在想想真的很可惜。
T4
这道题就是一道运用指针的题,开始先把输入的每种颜色有多少个转化成数组,如第一种颜色有3个,第二种颜色有3个,数组就应该是1,1,1,2,2,2这样子,然后一个指针从头开始,一个指针开始,一个从尾开始,向中间走两个两个输出就可以了。
正确思路:
T1
动态规划。三位数组f[i,j,t]表示在第t个时间点走到i,j这个位置有多少种方案,状态转移方程就是f[i,j,t]:=f[i,j,t]+f[i+u[k],v[k],t-1],k需要枚举,表示四个方向,在状态转移方程之前还需判断自己和旁边的四个位置是否能走,时间点的循环放最外面。
T2
动态规划。一开始要有个处理,定义一个数组,这个数组存的是如果后面一次性载i头奶牛,加上来回一共要多长时间。然后两重循环,i从1到n,j从1到i,状态转移方程是f[i]:=min(f[i-j]+a[j],f[i]),意思是之前过去了i-j头奶牛之后直接把后面剩下直到i的运过去的时间和已经记录过的运i头奶牛的时间进行比较,初始化f[i]:=maxlongint,最后输出f[n]-m,因为最后一次过去就不用再回来了。
T3
其实这题比较简单,就是两个循环1到n,如果满足条件就把其中一个的行变成两个行之中最大的一个,列也一样,另外一个的行和列都变成0,最后累加每一个的面积就可以了。
T4
同上。
考试思路:
T1
一看到题目就想到了深搜,但是想想应该会错,于是先跳过,然后到后面的时候,实在想不出其它方法,只好加了一些优化,但由于时间问题,没想出更好的优化,只拿了40分。
T2
一开始以为只能回去一次,可到后面理解透题目才明白,是可以回去很多次的,然后我就一直在想用动态规划的方法,虽然知道了动态转移方程,但我的时间循环放在里面了,于是错了。
T3
没有想到方法,于是弃了,现在想想真的很可惜。
T4
这道题就是一道运用指针的题,开始先把输入的每种颜色有多少个转化成数组,如第一种颜色有3个,第二种颜色有3个,数组就应该是1,1,1,2,2,2这样子,然后一个指针从头开始,一个指针开始,一个从尾开始,向中间走两个两个输出就可以了。
正确思路:
T1
动态规划。三位数组f[i,j,t]表示在第t个时间点走到i,j这个位置有多少种方案,状态转移方程就是f[i,j,t]:=f[i,j,t]+f[i+u[k],v[k],t-1],k需要枚举,表示四个方向,在状态转移方程之前还需判断自己和旁边的四个位置是否能走,时间点的循环放最外面。
T2
动态规划。一开始要有个处理,定义一个数组,这个数组存的是如果后面一次性载i头奶牛,加上来回一共要多长时间。然后两重循环,i从1到n,j从1到i,状态转移方程是f[i]:=min(f[i-j]+a[j],f[i]),意思是之前过去了i-j头奶牛之后直接把后面剩下直到i的运过去的时间和已经记录过的运i头奶牛的时间进行比较,初始化f[i]:=maxlongint,最后输出f[n]-m,因为最后一次过去就不用再回来了。
T3
其实这题比较简单,就是两个循环1到n,如果满足条件就把其中一个的行变成两个行之中最大的一个,列也一样,另外一个的行和列都变成0,最后累加每一个的面积就可以了。
T4
同上。