CSP刷题历程
文章平均质量分 53
由于本人实力较菜,因此此专栏仅记录T1-T3
笨笨sg
东B计科
展开
-
2022-12-1 现值计算
【代码】2022-12-1 现值计算。原创 2024-03-29 11:08:29 · 111 阅读 · 0 评论 -
202312-1 仓库规划
当然也可以通过对仓库的维度进行排序,进而减少比较次数,这样子可以实现一定程度的优化,但需要开辟一个数组用来获取排序前某个元素所在的原始下标与排序后其所在的新下标的映射关系。首先分析复杂度,如果采用暴力求解,时间复杂度总共为O(m*n^2)=>10^7,而在竞赛中,一般算机一秒能运行5 x 10^8次汁算,因此完全可以采用暴力求解(两层循环)注意在多种可选择上级仓库的情况下,要选择排序前仓库编号最小的,而不是排序后仓库编号最小的。原创 2024-03-22 08:56:08 · 316 阅读 · 0 评论 -
2023-05-3 解压缩
因为每2位是1bit,所以最好不要直接采用字符串求解,可以先将每个bit转换为十进制整数再进行位运算更简洁。本题题面较为复杂,但是在准确把握题意的情况下会用位运算即可AC。可参见Pujx:(orz)原创 2024-03-25 14:55:43 · 274 阅读 · 0 评论 -
2022-12-3 JPEG 解码
同时每个斜线的元素个数也可由8 - abs(b - 9)得到,然后就可以根据b是奇数还是偶数确定是从上向下还是从下向上,然后先确定y的初始坐标,如果b是奇数的话,y = 8 - max(9 - b, 0);否则y = 8 - max(9 - b, 0) -(8 - abs(i - 9)) + 1 = abs(i - 9) + 1 - max(9 - i, 0)即可,确定y后,x=b-y。①碰到y轴或者x1轴(y==7)改变方向。原创 2024-03-29 17:19:42 · 658 阅读 · 0 评论 -
2023-05-1 重复局面
直接用map<string,int>做映射即可,原本觉得unordered_map时间开销会更小,但实践证实了本题采用map更优。原创 2024-03-25 14:02:51 · 132 阅读 · 0 评论 -
202312-2 因子化简
【代码】202312-2 因子化简。原创 2024-03-22 09:01:17 · 309 阅读 · 0 评论 -
2023-03-2 垦田计划
维护一个数组用于存储"第i块区域开垦耗时-缩短 1 天所需资源数量",然后逆序遍历,如果当前资源可以维持当前最大开垦耗时区域的优化资源(缩短该区域开垦时间 1 天所需资源数量),那么就消耗,然后当前的缩短 1 天所需资源数量加到下一个最大开垦耗时区域的优化资源中即可,直到m耗尽或者减到k(最小开垦耗时)即可。初始:5-1, 6-(2+1), 7-1 m:9。原创 2024-03-27 22:50:58 · 289 阅读 · 0 评论 -
2023-9-3 梯度求解
比如如果现在某一个式子是关于x1和x2的函数y,那么在求y对x1的偏导数时,x2就可以视为常量,因此为了方便处理,我们在将后缀转中缀的过程中直接将“无关变量x2”的值代入即可。因为公式本身就是一个关于x1的各种次方项的加和,因此不妨在后缀转中缀的过程中直接将公式用数组表示,数组下标idx代表的是当前项中x1的次方,其中的元素则为当前项的系数,等得到了这个最终公式后,直接按照求导公式求解即可。假设存在一个空栈S,依次读取逆波兰式的每一个元素,若读取到的是变量或常量,则将其压入 S中;原创 2024-03-24 15:20:16 · 329 阅读 · 1 评论 -
2022-12-2 训练计划
对于求解链表上每个结点的最早开始时间,只需要从邻接表的头部遍历到尾部即可,若到达了尾部后其时间开销已经超过了最大训练天数,则表示在开赛前无法完成所有科目,直接退出即可。若是可以满足其时间开销,则只需要进行逆操作,但是得额外维护一个回溯的最大值(多个孩子结点往父节点回溯的情况)。拓扑排序的思路和上述的dfs其实是一致的,如果某个科目i依赖于j,也就是从j到i存在一条有向边,那么分别定义一个存储结点入度和出度的数组,然后开辟一个队列,入度是要用于从头开始向尾部遍历用,出度则是反过来从尾部向头部遍历用。原创 2024-03-29 16:17:26 · 258 阅读 · 0 评论 -
2023-05-2 矩阵运算
可以分析一下复杂度,本题如果按照公式的矩阵乘法顺序,O(n^2*d),大概是2*10^9,会T。与V的矩阵乘,然后再执行Q与其的矩阵乘即可,这样复杂度就是O(d^2*n)注意:矩阵的点乘运算任何时候执行都可以,只要保证维度匹配即可。可参见Pujx:(orz)原创 2024-03-25 14:41:03 · 221 阅读 · 0 评论 -
2023-9-2 坐标变换(二)
题目中给出了上述两种操作,由于操作序列中这2种操作会交替出现,既会涉及到乘法也会涉及到加法,表面上看起来似乎没有办法通过“前缀”的形式进行求解。那么经过一系列从i到j的操作变换,最后的坐标该怎么求呢?从操作1到操作i的拉伸得到的一个坐标其实就是将坐标扩大了。但其实,可以将上述两种操作统一为一种操作,“拉伸k倍”可以视为“拉伸k倍,旋转0°”,“旋转。°”,因此其实每个操作都可以视为拉伸与旋转的结合。旋转操作同理,只是将乘法换为加法即可。,那么从1到操作j的拉伸无非就是扩大了。,因此从i到j的拉伸倍数为。原创 2024-03-24 15:05:53 · 313 阅读 · 0 评论 -
2023-9-1 坐标变换(一)
【代码】2023-9-1 坐标变换。原创 2024-03-24 14:50:30 · 175 阅读 · 0 评论 -
2023-03-3 LDAP
后来在网上看了不少博客,大多数都是采用bitset的做法,对于每个表达式中的逻辑表达式,不断递归拆分,拆分为2个基础表达式,然后分别求满足这2个基础表达式的用户,然后再回溯分别求交集或者并集即可,这样子就不需要对每个表达式都遍历一遍用户列表。本来我的想法是对于每个表达式,都遍历一次用户判断是否满足该表达式,但最后超时了,只得了70分。原创 2024-03-28 12:03:06 · 449 阅读 · 0 评论 -
2023-03-1 田地丈量
【代码】2023-03-1 田地丈量。原创 2024-03-27 22:39:56 · 133 阅读 · 0 评论 -
202312-3 树上搜索
注意“向用户询问名词是否属于该类别”这个操作,并不是简单的判断idx和query是否相等,而是看当前的idx是否在以query为根节点所在的子树中。原创 2024-03-22 09:33:17 · 570 阅读 · 0 评论