NOIP2015 写后感

来源:互联网 发布:24小时私人网络上借钱 编辑:程序博客网 时间:2024/05/16 17:18

悲伤的去年……

Day1


T1
直接模拟就可以了,听说有人考场上非要卡内存,然后得了90分(?)
T2
可以tarjan,不过有点大材小用了,因为每个点的出度为1,所以直接跑dfs,记录一下搜索树深度就可以了
傻逼的题解
T3
orz Yveh大爷去年现场A掉
模拟暴力搜索
考试数据好像还是挺水的,但自己好像有点傻逼,一开始写的时候各种优化忘加,和打表一个分= =
后来改了改把uoj上的加强版也给过了
说几个优化的地方
1.最优答案剪枝
2.如果当前还有牌,那么判断当前步数+1与答案的关系,这样可以让搜索树深度减1,别看这一个1,也是很管用的
3.牌的顺序是三顺,二顺,单顺,四带二和三带二(一,零),如果都没有这些牌,那就只剩下了单牌和对牌,直接统计输出就可以了,这是一步非常重要的优化
4.我顺便把炸弹也给放进了三带一的类型中,还有就是当三带二/一都不行时,才枚举只打出这三张牌的情况
据说四带,三带可以直接贪心?

Day2


T1
二分答案然后贪心判断(然而当时并不会二分答案,和CA爷一样写了堆+贪心),据说有一点点细节?
傻逼的代码
T2
不错的DP
orz Shallwe大爷去年现场A掉
f[i][j][p]表示dp到a串的第i个字符时,分割了p个子串,且已经匹配了b串的前j个
这样的话转移方程就是

f[i][j][p]=s=1g[i][j]f[is][js][p1]

其中g[i][j]表示从a[i],b[j]往后匹配的最大长度
直接做时间复杂度是O(nm2k),空间复杂度O(nmk),都会炸飞
观察到p1转移p,所以可以滚动数组,把O(nmk)的空间压缩成O(nm)
然后再预处理一下g[i][j],加个前缀和优化,转移由O(m)O(1),时间复杂度就O(nmk)
答案为f[n][m][k]
T3
传送门
去年的自己因为stl堆不会用,手打堆不熟练导致在T1的时间上花的太多,一看T3,想想自己连邻接表存图都不会,然后就弃疗了←_←
很多话都在这里说了
也早就理解了树上差分= =
好像链剖+二分是O(nlog3n)
树上差分就是纯正的O(nlogn)
……
总结一下,感觉去年的自己不知道在干些啥?很多基础知识(比如邻接表存图,SPFA,LCA,二分答案等等)都不会?
oi的回忆就是体会以前的自己是多么的沙比
但现在的我真的达到我内心想成为的自己了吗?
TA爷去诸城一中讲课,说看到了以前的自己
人的追求是永无止境
站的更高才能看的更远吧……
The end.

1 0
原创粉丝点击