反思
1.疲惫感呈现跃迁式上升,打字速度比之前快了一点
2.打个人赛一定要把题都看一遍,要勇于暴力,大不了就是尝试错了,排名低了一点,打完也还有时间可以补。
题解
SMU Summer 2024 Contest Round 4-CSDN博客
未解决题目
(为什么要放在这里呢,放题解不会看,写了相当于没写,遇到过的也还是不会,说实话就是懒,不愿意去翻以前的题单)
J最大矩阵匹配————前缀和,动态规划
B 爱探险的朵拉————拓扑排序
思路:
1.通过拓扑序找到环,标记环的长度
2.按照链表的方式搜索,遇环加上该点标记的环的长度
L 图上计数(Hard)————贪心,多重背包,二进制或单调队列优化
Stronger Takahashi————01BFS
Red Polyomino————枚举+深度优先搜索
Predilection————前缀和+动态规划
Keep Connect————线性dp
CodeForces - 1328E ————dfs序/LCA
AtCoder abc344_f————dp
AtCoder abc216_f————dp加前缀和优化
[NOIP2014]寻找道路————bfs
思路:1.读入数据,并建立正向和反向边。
2.从终点反向BFS,求出所有的②。
3.对每个点判断是否满足①。
4.从起点正向BFS,只经过①点,求出最短路径。
其他总结
1.size()函数的返回类型为unsigned,使用vector或queue等时,尤其需要注意用size()函数时,不能和负数比较大小,不然会发生一些很恶心的错误。
for (int i = 0; i < m; i++) {
int x;
cin >> x;
if (!q.size() || x <= q.top()) q.push(x);
else g.push(x);
// cout << q.size() << " " << g.size() << endl;
while ((int)q.size() - (int)g.size() > 1 && q.size()) {
// cout << q.top() << '\n';
g.push(q.top());
q.pop();
}
while ((int)g.size() - (int)q.size() > 1 && g.size()) {
q.push(g.top());
g.pop();
}
if (i % 2 == 0) {
// tt++;
if (i == 1) a[tt++] = x;
else {
if (q.size() == g.size()) a[tt++] = (q.top() + g.top()) / 2;
else if (q.size() > g.size()) a[tt++] = q.top();
else a[tt++] = g.top();
}
}
}