摘要: 先复制一遍数组,在用一个数组sum[ i ]表示前 i 个数字的和,对于以第k个数开头的情况,只需找出sum[ k ]到sum[ k+n ]的最小值min,如果min - sum[ k-1 ]大于0则满足。#include #define maxn 2001000int a[maxn],sum[ma... 阅读全文
posted @ 2014-04-16 16:56 贝尔摩德 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 先黑边优先做一次生成树得到白边的最小值min,再以白边优先做一次生成树得到白边的最大值max,只要min到max之间有Fibonacci数则可以,因为从min到max总可以去掉一条黑边换成一条白边。#include #include #define maxn 110000struct edge{ ... 阅读全文
posted @ 2014-04-16 16:51 贝尔摩德 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 注意到当一个数开方到1后就不再变了,每个数开方次数不会太多,所以进行更新时如果该区间的数字都是1了就直接return#include #include #include #define maxn 100100__int64 sum[4*maxn];void build(int l,int r,int... 阅读全文
posted @ 2014-04-16 16:44 贝尔摩德 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 这道题挺难的,在网上见到这段分析:对原矩阵黑白染色1 2 34 5 67 8 9A={1,3,5,7,9}B={2,4,6,8}矩阵中每个点可以取两个值中的任意一个,或者都不取。根据这一个条件,我们可以把一个点拆分成两部分,k,k'。对A集合中的点,k为金蛋,k'为银蛋。B集合中的点,k为银蛋,k'... 阅读全文
posted @ 2014-04-16 16:34 贝尔摩德 阅读(135) 评论(0) 推荐(0) 编辑