计算机竞赛怎么准备呢?怎样分配好时间呢?

本人目前大二,计算机科学与技术专业在读,大一学了C++程序设计基础,目前大二开课数据结构与算法,这学年想搞竞赛啦(为保研打基础),像蓝桥杯,ACM,东北地区大学生程序设计竞赛,团体程序设计天梯赛……之前没什么基础,编程能力一般,想搞竞赛,却没什么努力的方向,想咨询一下大家,我应该怎么准备呢?搞这些竞赛是不需要学习数据结构与算法呢,我是跟着学校学呢,还是自己学呢?还需要什么理论知识的储备,应该什么时候刷题呢?
另一个就是如何分配好时间在学好校内课程的同时备赛呢?大家们都是如何分配好时间的呢?有的同学们,不仅课内的知识学的好,还准备建模比赛,各种计算机类的比赛,自己目前只能跟着学校内的课程,大家是怎么学有余力?
(我真的很想努力,但是不知道的该怎么努力?大家可否给些建议)

首先确定自己要参加的比赛,接着找这些比赛的历年题目看看,练习熟练于心,推测下次比赛试题要考察的方向。
所谓的学有余力不过是别人学习的效率更高,你要做的就是提高自己学习的效率