2013-12
题目 | 考点 | 经验总结 |
---|---|---|
出现次数最多的数 | 哈希 | / |
ISBN号码 | 字符串操作 str.back() |
1. 对于题目中的
特殊条件一定不要遗漏(余10为X)
2. 最好
题目读两遍,想清楚,再动手写,减少出错率
3. 当过了部分样例,检查代码边界,
再仔细审题
|
最大的矩形 | 暴力枚举 | / |
有趣的数 | – |
1. 像这种没有思路不会做的题目,
n从最小开始,在草稿本上演示一下过程,考虑暴力模拟
2. 题目中提到的
对答案取余不要忘记
3. 特别大的数一定要
记得long long
4.字符串的相应操作
int x =
stoll(str.c_str())
str.insert(str.size() - 1, n, ‘0’) //
在str的末尾加上n个0
5. 判断的到底是字符‘0’还是数字0,不要搞混了
|
I’m stuck! ⭐ | dfs |
1.
dfs的节点最多只会遍历一次,每次遍历的时候加一个st数组表示该点已遍历过,防止死循环
2. 当题目中要
满足多个要求,不好实现时,尝试将问题分解(例如这个题目,可以先dfs找到S能够到达的点集,再从Tdfs一遍找到T能够到达的点集,二者求差集即可获得答案)
3. WA的时候,再
仔细检查代码中关键的逻辑实现,在草稿本上多次演算一下
4.
全局变量以及局部变量的使用不要重名
|
2014-03
题目 | 考点 | 经验总结 |
---|---|---|
相反数 | 暴力枚举、哈希 | / |
窗口 | 暴力枚举、哈希、模拟 | / |
命令行选项 | 哈希、常用STL容器(unordere_map,vector) 字符串操作(通过空格将串进行分割,可以使用stringstream也可以使用双指针) |
1. map中元素的顺序
不是加入元素的顺序
2. 使用
getline()之前,如果前面使用了cin读入,记得要使用getchar()
3. 当发现过了测试样例但是WA的时候,再
仔细读题目中关于输入中的数据的描述以及输出数据的要求(例如这道题目中,
输出需要按照字典序输出,并且输入中命令行的第一个字符串,题目中对其的描述是不处理,但并没有说这个串一定是样例中的“ls",
有时候样例故意恰好避开这些点也能通过,一定要仔细审题(不然可能就是0分到100分的差距)
|
无线网络⭐ | bfs、 dp |
1.
ne和e存储的是边数,每增加一条边,idx++,N个点,边数大小设为N * N
2. long long res2 =
(long long) r * r; //r是int,需要转long long,否则会
溢出
3. memset(h, -1, sizeof(h)); //
邻接表的h数组一定要记得初始化
4. 求两点距离是否<= r时,
判断坐标平方和 <= 距离平方,别开根号
5. 求若干点之间,某点到某点的最短路,可以
将点与点之间转换为边权为1的无向图,使用bfs来求解最短路问题
|
任务调度 | – | – |
2014-09
题目 | 考点 | 经验总结 |
---|---|---|
相邻数对 | 排序、暴力枚举 | / |
画图 | 模拟、哈希、暴力 |
注意看题目中说的坐标是指一个格子还是算格子的对角点
|
字符串匹配 | 字符串的查找(find或strstr) 字符串的大小写转换(可以自己遍历字符串写,也可以使用transform函数) |
布尔变量的变量名尽量不要很晦涩
|
最优配餐 | – | – |
拼图 | – |
像这种给出每个点的数据范围,前几个小的数据,找规律直接计算答案或者暴力模拟,比较容易得分
|
2014-12
题目 | 考点 | 经验总结 |
---|---|---|
门禁系统 | 哈希、暴力 | / |
Z字型扫描 | 找规律、暴力模拟 |
先找清楚路径的变化规律再编程,
数组的边界问题一定要小心处理
|
集合竞价 | 结构体存储、set、double类型输出、模拟、暴力 |
1. 定义的变量一定要初始化
2. printf输出格式
printf(“%d”, a); // d格式字符输出带符号的十进制整数 printf(“%f”, a); // f格式字符输出一个实数(包括单精度、双精度、长双精度) printf(“%.nf”, a); // %.nf格式字符输出一个实数(n表示小数点后保留n位小数
3. 当题目中没有过多的说明某个操作或数据可能出现的情况,但确实可能会出现递归处理等情况,可以先不考虑递归的情况,后续实在没有其他错误的时候,再来修改这个操作的处理情况(比如说,这道题目中,cancel这个记录有没有可能操作的是一条cancel记录,出现递归的情况,但是
题目中并没有强调这个问题,有时候可能是自己想复杂了,所以初步实现代码的时候可以先按简单的逻辑写代码,并加一个注释,后续有样例无法通过并且其余逻辑没有任何问题的时候,可以考虑改进这个实现
|
最优灌溉 | – | – |
货物调度 |
2015-03
题目 | 考点 | 经验总结 |
---|---|---|
图像旋转 | 模拟 | / |
数字排序 | 重载排序函数 |
1. 结构体变量排序(结构体内重载operator<函数)
2. 其余数组变量排序(重载cmp函数)
|
节日 | 暴力模拟 |
1. 当出现了bug,并且找不到问题的时候,输出关键数据,很有用啊
2. 计算日期的题目,判断闰年,获取每月的天数、月份数组等模板灵活应用
3. 计算星期的公式 :
(已知星期几 + 相差天数 ) % 7 = 所求星期几
4. printf(“
%04d/%02d/%02d\n”, year, month, d) //占位输出日期的简便写法
5. priintf(“%0md”, IntNum); //右对齐,字符宽度为m,如果要输出的字符宽度>=m,则全部输出,如果字符宽度<m,则左补0
6. priintf(“%md”, IntNum); //输右对齐,字符宽度为m,如果要输出的字符宽度>=m,则全部输出,如果字符宽度<m,则左补空格
7. 还是那个最重要的一点,先
想清楚怎么写,并
验算过该逻辑没有问题,再动手写,
不要没有思考清楚就着急动手,后面调试的时间可能会更长,最好一遍过
|
网络延时 | – | – |
最小花费 |
//重载结构体
struct node
{
int a;
int b;
bool operator< (const node &t)const
{
if (b != t.b) return b > t.b; //根据第二个元素从大到小排序
return a < t.a; //如果第二个元素相等,则根据第一个元素从小到大进行排序
}
}Node[N];
//重载cmp函数
bool cmp(PII a, PII b)
{
return a > b;
}
sort(a, a + n, cmp); //此处cmp不需要带参,也不需要加括号
2015-09
题目 | 考点 | 经验总结 |
---|---|---|
数列分段 | 找规律 / 双指针 | 使用双指针时注意考虑j指针会停在什么地方,注意数组的边界位置 |
日期计算 | 暴力模拟 | / |
模板生成系统 | vecotr、unordered_map、substr、find |
当部分阳历过不了的时候,仔细检查题目中的细节要求是否遗漏,如果仍然解决不了,
仔细检查if-else结构是否遗漏了某种情况(是否存在跳过了当前项的处理?是否遗漏了最初项和最末项的处理?
|
高速公路 | – | – |
最佳文章 | – | – |
2015-12
题目 | 考点 | 经验总结 |
---|---|---|
数位之和 | 求数的每一位 | 可以将数字转换成string,再遍历每一位 / 也可以取余进制来求每一位 |
消除类游戏 | 双指针、暴力模拟 |
有时候用人的思维想的方法用代码实现并不容易,可以转换一下思维,比如判断一连串是否满足,可能不好判断,可以转换思维 -> 判断每个点是否满足,相当于也能找到满足的答案
|
画图 | dfs、坐标系转换、暴力模拟 |
1. 做题的时候一定要看清楚是什么坐标系,如果不是数组坐标系,将题目中的坐标系与数组坐标系画出来,
寻找坐标之间的规律,将题目坐标系转换成数组坐标系
2. 出现部分样例过不了的时候,再仔细审题看看是否遗漏特殊条件,或者
仔细检查if-else中的判断条件是否可能出现其他的情况?
|
送货 | – | – |
矩阵 |
2016-04
题目 | 考点 | 经验总结 |
---|---|---|
折点计数 | 暴力模拟 | / |
俄罗斯方块 | 暴力模拟 |
1. 有的时候不要把题目想的太难了,我记得很久之前做这道题目的时候写的很复杂,其实想清楚整个过程或者想一个简单点的思路,好像并没有那么难啊,也不知道当时是怎么想的,总之,
不要惧怕这道题目,一开始没有思路也不要慌张,慢慢想,放轻松,想清楚了再动手写
2. memcpy(dist, src, sizeof(src)); //数组的复制
|
路径解析 | 栈、双指针、字符串操作、大模拟 |
1.大模拟还是仔细想清楚再写不要太着急,可以
将主要流程分为几个函数模块,先将函数模块列出来,流程搞清楚了,再动手,特别是题目中涉及的情况分支有哪几种,分别应该如何处理,要想清楚
2. 当有部分样例过不了,但是
自我感觉逻辑没有问题的时候,一定要思考一下之前犯的错误,尤其是被样例带偏,判断语句缩小了范围,导致样例过不了(比如说,这道题目中,题目中说的是相对路径是不以/开头,由于看到样例中是以.开头,就默认相对路径一定就是以.开头,这个问题一定要注意,错两次了!!
3. 在循环体中
使用getline,最好每次读入时,将str赋值为空串,否则无法读入空串的情况
4. str.insert(i, “abc”)可以从str下标为i的位置插入字符串abc,
记得此处只能插入字符串,要用双引号
|
游戏 | – | – |
网络连接 |
2016-09
题目 | 考点 | 经验总结 |
---|---|---|
最大波动 | 暴力模拟 | / |
火车购票 | 暴力枚举/STL |
灵活运用STL能够很方便解题,这个题目中运用
vector < queue < int > > 这个数据结构可以不用维护额外信息,直接暴力枚举
|
炉石传说 | 二维结构体数组 | / |
交通规划 | – | – |
祭坛 |
2016-12
题目 | 考点 | 经验总结 |
---|---|---|
中间数 | 排序、哈希 | / |
工资计算 | 逆向思维、暴力枚举 |
1.
数据范围很重要,以及题目中给出的数据约束条件也很重要,会影响解题的方法(比如这题可以暴力)
2. 有时候
根据题意解题并不容易,可以考虑逆向思维,比如该题,逆着不好算,正着来算,枚举可能的税前工资,判断税后是否吻合
3.
划分多区间的条件,可以利用数组进行存储模拟线段划分,if判断较为繁琐
|
权限查询 | unordered_map嵌套使用 | unordered_map<string, unordered_map<string, int>> |
压缩编码 | – | – |
卡牌游戏 |
2017-03
题目 | 考点 | 经验总结 |
---|---|---|
分蛋糕 | 暴力模拟 | / |
学生排队 | 暴力模拟 | / |
Markdown | vector、字符串操作 |
1. str.find(str, pos) //大哥
pos是第二个参数,不要搞错了,这个错误犯了好几次了
2. 字符串的输出千万不要输出错
3. 可以使用vector<vector < string> >等stl容器
|
地铁修建 | – | – |
引水入城 |
2017-09
题目 | 考点 | 经验总结 |
---|---|---|
打酱油 | ||
公共钥匙盒 | – | – |
JSON查询 | STL嵌套定义、双指针、递归 |
1. 结构体里
不能嵌套unordered_map,可以嵌套map
2. 使用未定义函数需要申明,
不需要变量名,函数头去掉变量名加分号
3. map值是一个map,不能直接将值赋给当前map,需要用一个变量暂存一下
4.
erase删除后,字符会左移,原来的下一个字符会变成当前这个字符,处理的时候要考虑到这个问题
5. 答案特判输出时,
询问情况应考虑全面
|
通信网络 | – | – |
除法 |
2017-12
题目 | 考点 | 经验总结 |
---|---|---|
最小差值 | ||
游戏 | – | – |
Crontab | 结构体、哈希、STL、字符串、大模拟 |
1.
map定义时初始化,unordered_map <string, int> text = {{“jan”, 1}, {“feb”, 2}};
2.通过函数实现字符串的大小写转换,
transform(src.begin(), src.end(), dist.begin(), ::tolower); //将源串转为小写,存储在dist串,该函数的头文件是algorithm
3.stoi(str.c_str()) //
stoi函数不需要手动去除前缀0
4.vector res(n); //定义固定长度的vector,并且不用memset为0
5.重新写构造函数,一定要加上node(){}这个原始构造函数
6.判断闰年 (y % 400 == 0) 或 ((y % 4 == 0) && y % 100)
7. printf("%04d%02d%02d%02d%02d ", year, month, day, hour, minute); //日期的前补零输出
8. 存在不是固定的日期,而是某些时间节点满足时,可以将满足的时间节点用数组存储,通过时间来匹配是否是该时间点
9.
数组名作为函数实参,相当于传首地址,可以直接在函数内修改数组,函数形参定义处是一个不定义长度的数组
|
行车路线 | – | – |
商路 |
2018-03
题目 | 考点 | 经验总结 |
---|---|---|
跳一跳 | ||
碰撞的小球 | – | – |
URL映射 | ||
棋局评估 | – | – |
二次求和 |
2018-09
题目 | 考点 | 经验总结 |
---|---|---|
卖菜 | ||
买菜 | – | – |
元素选择器 |
1. transform这个函数可以转包含数字的串,不用再特判了!
2. 使用vector容器的auto输出法,不需要特判容器中是否有元素
3. 没有思路不要慌,再根据题目要求想想要怎么解决这个问题,
将问题划分为小类,再逐一理清思路,逐一击破,想清楚再写,可以少改bug的时间,不要急,不要急,不要急,想清楚如何存储,如何处理,具体是有哪几个步骤,并且
数据结构尽量使用STL,STL,STL
| |
再卖菜 | – | – |
线性递推式 |
2018-12
题目 | 考点 | 经验总结 |
---|---|---|
小明上学 | ||
小明放学 | – | – |
CIDR合并 | ||
数据中心 | – | – |
管道清洁 |
2019-03
题目 | 考点 | 经验总结 |
---|---|---|
小中大 | ||
二十四点 | – | – |
损坏的RAID5 | ||
消息传递接口 | – | – |
317号子任务 |
2019-09
题目 | 考点 | 经验总结 |
---|---|---|
小明种苹果 | ||
小明种苹果(续) | – | – |
字符画 | ||
推荐系统 | – | – |
城市规划 |
2019-12
题目 | 考点 | 经验总结 |
---|---|---|
报数 | ||
回收站选址 | – | – |
化学方程式 | ||
区块链 | – | – |
魔数 |
2020-06
题目 | 考点 | 经验总结 |
---|---|---|
线性分类器 | ||
稀疏向量 | – | – |
Markdown渲染器 | ||
1246 | – | – |
乔乔和牛牛逛超市 |
2020-09
题目 | 考点 | 经验总结 |
---|---|---|
称检测点查询 | ||
风险人群筛查 | – | – |
点亮数字人生 | ||
星际旅行 | – | – |
密信与计数 |
2020-12
题目 | 考点 | 经验总结 |
---|---|---|
期末预测之安全指数 | ||
期末预测之最佳阈值 | – | – |
带配额的文件系统 | ||
食材运输 | – | – |
星际旅行 |
2021-04
题目 | 考点 | 经验总结 |
---|---|---|
灰度直方图 | ||
邻域均值 | – | – |
DHCP服务器 | ||
校门外的树 | – | – |
疫苗运输 |
2021-09
题目 | 考点 | 经验总结 |
---|---|---|
数组推导 | ||
非零段划分 | – | – |
脉冲神经网络 |
1. 如果样例过了,但是只得了十几分,并且逻辑没有问题,静下来冷静思考,一定是题目意思理解错了,题目的主要框架理解错了,仔细思考这个问题可能出现的情况,再仔细读题,思考可能出现的情况
2.如果题目中出现爆内存的情况,不要慌,仔细思考使用的数据结构有没有冗余,例如可以将数组替换成map之类的
| |
收集卡牌 | – | – |
箱根山岳险天下 |
2021-12
题目 | 考点 | 经验总结 |
---|---|---|
序列查询 | ||
序列查询新解 | – | – |
登机牌条码 | ||
磁盘文件操作 | – | – |
极差路径 |
2022-03
题目 | 考点 | 经验总结 |
---|---|---|
未初始化警告 | 模拟 | / |
出行计划 | – | – |
计算资源调度器 | ||
通信系统管理 | – | – |
博弈论与石子合并 |
2022-06
题目 | 考点 | 经验总结 |
---|---|---|
归一化处理 | 模拟 | 浮点数的输出%f |
寻宝!大冒险! | – | – |
角色授权 | ||
光线追踪 | – | – |
PS无限版 |
2022-09
题目 | 考点 | 经验总结 |
---|---|---|
如此编码 | 根据题意模拟 | / |
何以包邮? | dp、01背包 | 将题目尽量往对应模板上靠拢(转变题意,套用模板) |
防疫大数据 | ||
吉祥物投票 | – | – |
高维亚空间超频物质变压缩技术 |
2022-12
题目 | 考点 | 经验总结 |
---|---|---|
现值计算 | ||
训练计划 | ||
JPEG 解码 | ||
聚集方差 | ||
星际网络 |