20250729

总结

今天上午和下午写了5个题,晚上写0个
上午有1个题是在讲解之前看题解写的,剩下的是在讲解前自行完成
感觉还是慢了

CF1324E

这个题是简单的暴力递推,只需要注意一下初始值设置即可
设dp[i][j]为前i个数,它们的和对h取模为j,最大答案是多少
方程为dp[i][j] = max (dp[i − 1][(j − a[i] + h) % h], dp[i − 1][(j − a[i] + 1 + h) % h]) + (L <= j && j <= R)
十分简单,但是我不知道为什么想了20min

CF2000F

这个题也比较简单
设do[i][j]表示前i个矩形,贡献值为j的最小代价
只需要枚举每个矩形的贡献值,直接通过对矩形覆盖的暴力代价统计,即每次要贡献+1,则代价+min(now_x, now_y)
剩下的就跟正常dp没区别了

CF1557D

这个题有点难写,我调了1.5小时左右,有点难绷
我的做法比较普通,就是先对每个线段做离散化,然后使用扫描线从左往右扫
每次扫到的相邻行的被区间覆盖的点就连边
最后跑最长路即可,结果写成最短路调半天

CF780F

这是我看了题解的那一道,不知道为啥,之前自己搞的倍增专题训练对这个题的思考好像没有起作用,还是没想出来。。。
状态为dp[s][0/1][x][y],表示从x到y,路径长度为2^s,由0/1开头的路是否存在
直接开启暴力统计,弄个biset解决一切dp和答案统计问题

Retravel

这个题我想了几分钟,弄出来一个很直接的方法
设dp[i][j]表示从i到j的所有点全部到达的最小代价
转移的想法很简单,直接假设以{min(x[i](l <= i && i <= r)), min(y[i](l <= i && i <= r))}为起点
方程为dp[i][j] = min (dp[i][j], dp[i][k] + dp[k + 1][j] + x[i][k] + x[k + 1][j] + y[i][k] + y[k + 1][j] - 2 * (x[i][j] + y[i][j]))
答案就是dp[1][n]

最后

之后的习题直接15分钟没有确切思路框架直接看题解
要多用一下草稿纸,免得思路不清晰导致代码调不出来
对于明天的考试,我期望不高,至少230得有吧,老师保佑我别跟前几次一样老是出点问题了
我可能会在晚上吃完饭之后加入文化学习,有时候感觉那么点时间想题或者水贴不如高点文化

posted @ 2025-07-29 20:47  姜树  阅读(6)  评论(0)    收藏  举报