![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CCF-CSP
文章平均质量分 85
华农的小码农
这个作者很懒,什么都没留下…
展开
-
背包问题总结
因为要保留每一次更新状态时的方案,也就是第一层循环的 i ,所以我们就不能把dp数组进行一维优化了。因为我们要求的是字典序最小的一个方案。肯定是想要dp保留第一个满足的方案。因为dp取max时会实时更新的,也就是说,当前面的和后面的数都满足条件时,dp会保留后面的值。dp问题最重要的是状态转移方程。表示前 i 个物品,背包容量不超过 j 时的最大价值。保留的就是最先满足的方案(也就保证了字典序最小),这一点和01背包是有点像的,下面给出代码及优化。那么我们按照套路,写一下。来求得(因为项数不同)。原创 2024-03-22 15:34:33 · 464 阅读 · 0 评论 -
图论复习(最短路、最小生成树)
在建图时,记录每个节点的入度,首先把入度为0的点都存到队列里。然后在搜索时,每搜到一个点,就把这个点的入度 -1 ,当它的入度变为0时,就把它存到队列里。直到队列里全部的点都搜索完。这时要判断一下是否所有的点的入度都为0了。如果是,那么就找到了一个拓扑序列;否则就没有找到。原创 2024-03-18 17:51:31 · 2516 阅读 · 0 评论 -
第十四次CCF-CSP(第二题 买菜、第四题 再卖菜)
因为所有的区间值都在1e6之内。所以我们可以把区间内的所有值(半闭半开区间!)映射到一条长的线段上去。当出现了区间内的值,就 + 1,所以我们只需要在该线段上找到值为 2 的个数即可。因为题目要求 [s,t] 的长度为 t - s。并不是 t - s + 1。所以我们只需要在预处理的时候,少映射一位数即可。简单来说,就是给出两组区间的集合A,B 求出两集合中相交区间的部分的长度,算法跑一遍(因为有负数),求。建好图之后,只需要用。原创 2024-03-15 15:21:32 · 386 阅读 · 0 评论 -
第十一次CCF-CSP(第二题 公共钥匙盒、第四题 通信网络)
使用数组模拟邻接表时,一定要记得给h[]初始化为 -1!!!!同时建立正向和反向 两个图时,只需要建立两个不同的头结点数组h[]就行了。对于边的数量 M,保险起见,要设置为题目规定大小的 2倍!idx表示序号,大小并不重要。原创 2024-03-15 15:18:18 · 485 阅读 · 0 评论 -
第十三次CCF-CSP (URL映射、棋局评估)
等不重要的字符,然后再存放到结构体中。由题可知,规则的名称和结果是一一对应的,所以我们可以建立一个结构体来存储所有的规则。虽然官网上面可以100分,但是acwing上还是有一个测试样例过不去…在输出结果时,因为如果规则中出现了 类似于正则式的情况(比如。” 可知,这是一道博弈题,博弈简单来说就是每个人都会想方设法。就表示所有整数),这时应该把查询中对应位置的字符串输出。字符被去掉了,我们没有一个合适的字符作为分割符!我本来想的是,把所有的规则先处理好:去掉。接下来要考虑如何处理这些规则了。原创 2024-03-14 20:35:40 · 604 阅读 · 0 评论 -
第十二次CCF-CSP(Crontab、行车路线)
通过这道大模拟题,我学到了很多巧妙的方法。stoi(s)可以把字符串 s 直接转换为整数!tolower(c)可以把字符 c 转为小写toupper(c)把字符 c 转为大写结构体构建的巧妙!!!bool数组的巧妙利用!!!哈希表的映射!!!y总nb!!!对于优先队列,不能只会用它默认的形式,还有会把它和结构体结合起来。下面代码的意思是,构造一个优先队列 q ,其中按照 z 值的大小,从小到大排序!!!因为优先队列默认是大根堆!所以重载 < 时,return >才会是从小到大排序!原创 2024-03-11 21:37:13 · 703 阅读 · 0 评论