摘要: [P1016 旅行家的预算][1] 贪心 貌似贪心基本上都得加个排序 既然要求花费最少的话,显然在收费低的那个加油站多加点油是最好的 那么你考虑这么几种情况 1.一种最理想的情况,你在每个加油站加油,都能去到另一个更低价格的加油站,那么你每次找能到达且最小价格的加油站跑过去,然后加一定升数的油,这个 阅读全文
posted @ 2018-10-30 20:24 Zolrk 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 这种题应该格外注意“1”的问题(边界处理) 题意:给定N,求$1 \leq x,y \leq N$且gcd(x, y)为素数的(x,y)数对的个数 令p代表一个素数 $$gcd(x, y) = p \Rightarrow gcd(\frac{x}{p}, \frac{y}{p}) = 1$$ 于是有 阅读全文
posted @ 2018-10-30 20:07 Zolrk 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 如果你以(1,1)为坐标原点,那么是没有什么规律的 但如果你以(0,0)为坐标原点,仔细观察一下能发现每个能看到的点的坐标(x, y)互质 然后(x, y)既然可以那么(y, x)也行 矩阵坐标从0到N 1 注意phi[1] = 1 答案是$1 + 2 \sum_{i=1}^{N 1} \phi(i 阅读全文
posted @ 2018-10-30 18:19 Zolrk 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 这只是暴力算法 给定四个参数a0,a1,b0,b1,求满足$gcd(x, a0) = a1且lcm(x,b0)=b1$的x的个数 由lcm这个条件可确定x的上界,找b1的约数,每个都判断一下是否符合上述两个条件 我我我又爆int了 c++ include include include includ 阅读全文
posted @ 2018-10-29 21:49 Zolrk 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 哎暴力算法打错了 错误是这样的: c++ for(int i=1; i include include include include include using namespace std; define debug(x) cerr 阅读全文
posted @ 2018-10-29 21:12 Zolrk 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这是一道非常典型的筛法,利用区间长度比较小,以及质数比较少,用少量的质数,只筛区间内部的合数,复杂度就不会很高 建议多开long long,很多时候你难以注意到哪里会爆int 还有就是可以自己估摸着数量级提前把素数表打完,别每次都重打一遍素数表 阅读全文
posted @ 2018-10-29 20:52 Zolrk 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 对于每个点,有效的反转次数不会超过2,所以只要求出每个点的反转次数,加上其本身的0/1,再对2取模,就是这个点现在的颜色 问题来了,如何求某个点的反转次数呢?可以逆向思维,先把每个点的反转次数存在数组fli中,某个点的反转次数等于 其本身反转次数以及上下左右四个点的反转次数之和 (能对这个点有影响的 阅读全文
posted @ 2018-10-28 21:33 Zolrk 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目大意是,判断一个有向图中所有的任意两点x,y,是否满足,从x可以走到y 或者 从y可以走到x 很显然,同一个SCC中的所有点一定满足这个条件,当同一个SCC中的所有点要么同时选要么同时不选的时候,就可以缩点了。缩点的方法就是给每个点加一个强联通分量编号(染色),然后tarjan结束后考察每一条边 阅读全文
posted @ 2018-10-28 21:31 Zolrk 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 先说一个没有滚动数组的版本 对于A串的一个字符,只有选和不选两种可能,选是一种方案,不选也是一种方案 设$f(i,j,k)$ 为A串的前 i 项在 分离出 第k个子串 时 成功匹配到B串的前 j 项时 选择 A串第i项的方案数 还需要加上A串第i项不选择的方案 设$s(i,j,k)$ 为A串的前 i 阅读全文
posted @ 2018-10-28 21:29 Zolrk 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 记忆化搜索也是实现dp的一种,有时候可能比状态转移方程推过去复杂,但有时候因为是直接去搜索,反而降低了思维难度 就用01背包来练练手(设c为容量,w为重量,v为价值) 记忆化搜索 是在搜索的基础上,进行优化,跳过打开相同的子树,从而避免大量的重复计算。因为在搜索的时候可能会再次dfs到一个已经到过的 阅读全文
posted @ 2018-10-28 21:28 Zolrk 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 两个问题都需要按照 每个节点的相邻点 来思考解法。 把符合题目要求的,可产生联合权值的有序点对,称为 联合点 。 第一问 每个节点的子节点(相邻点)之间,彼此组成联合点,具体看图。 可以比较每个节点的相邻点的权值,得到最大子节点和次大子节点。 他们的联合权值就是这个节点所能 发现 的最大联合权值。 阅读全文
posted @ 2018-10-28 21:27 Zolrk 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 注意这X家不一定连续,并且输入中给定的就是第i家到入口的距离 先想只有一个的情况,扫一遍,找到其中最大的那个(路径要乘上2) 两个的呢?不大好想,不如想想n个的时候,情况最简单,那么从n到n 1的转移也很简单 考虑把过程反过来,一个个删点,每次删使得答案变化最小的点 现在问题是 快速找出区间内对答案 阅读全文
posted @ 2018-10-28 21:20 Zolrk 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 这种矩形问题常用单调队列优化枚举(通过贪心取最优降低了一个维度的枚举) 推荐这道题也要做一做:[\[ZJOI2007\]棋盘制作][1] 单调队列的空间记得开大点! 反正内存够用 注意,这题正方形边长是固定的! 暴力算法是枚举上边界所在的行,左边界所在的列,通过这两个个信息确定一个正方形,然后预处理 阅读全文
posted @ 2018-10-28 09:48 Zolrk 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 网上其他人的博客写的都非常棒,我自己也只是有点明白,就放个模板吧。。。 从1开始存的字符串 假设要从B串中找好多个A串 想理解kmp就得明确数组的定义:nxt[i]表示A串中以i结尾的非前缀子串 与 A的前缀子串 能够匹配的最大 长度 下面的代码为什么是j+1,不模拟一遍根本无法理解 我个人认为,j 阅读全文
posted @ 2018-10-26 17:11 Zolrk 阅读(111) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-23 19:14 Zolrk 阅读(2) 评论(0) 推荐(0) 编辑