摘要: 分析 求任意两点间的最短路,容易想到是Floyd,怎么存中间路径,直接用longlong压缩存就好 注意相同长度的路径要更新路径 代码 1 /******************** 2 User:Mandy.H.Y 3 Language:c++ 4 Problem:luogu3906 5 **** 阅读全文
posted @ 2019-09-02 21:18 Mandy_H_Y 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目 分析 考虑DP, 需要的状态:位置,自己是否发信号 f[i][0/1]表示覆盖到第i台的最少代价 也就是说,只保证了结尾为i及小于i的区间有烽火台 转移: f[i][0] = min(f[i-m+1][1],f[i-m+2][1],…,f[i-1][1]); f[i][1] = min(f[i 阅读全文
posted @ 2019-09-02 17:27 Mandy_H_Y 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 分析 看题解: 说实话,可以不用从一开始一个一个枚举,枚举素数就好,合数可以拆分为素数的积 所以:线性筛又出来了 枚举gcd之后呢,怎么算代价? 肯定不可能一个一个枚举。 那我们看看两种操作,一是加1,而是删除 只能加不能减说明只要找到大于当前值的最小的gcd的倍数就可以找出“加”的最小代价,再与删 阅读全文
posted @ 2019-09-02 15:01 Mandy_H_Y 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 分析 一道不可多得的好题啊 MZOJ数据过水,可以骗80分 好吧我们说正解 首先,k一定是个素数 其次,如果k > 320000(或k * k >= n时,注意 k * k 可能会爆longlong),那么满足条件的数最多只有一个 接下来,我们进入正题, 如题,说明满足条件的数只能含有k及k以上的素 阅读全文
posted @ 2019-09-02 08:30 Mandy_H_Y 阅读(290) 评论(0) 推荐(0) 编辑