摘要:题目大意:给一个长度为n的数列,划分成多个部分,每一个部分长度要大于等于K,定义每个部分的质量差是这部分的最大值减去最小值,求最优划分后,全局的质量差最小是多少。 题目分析:二分答案,check dp来check,dp[i] 代表 i这个位置可以作为一个区间的结尾,如果 i - 1 可以作为结尾,
阅读全文
摘要:题目大意:给定N个点M条边的无向图,以及一些必经过的点,求输出长度最短路径。 题目分析:想办法把图转化成DAG,于是找出最远点建立最短路树,跑topsort
阅读全文
摘要:1 #include 2 #define LL long long 3 const LL INF = 50000000000000000ll; 4 #define maxn 500010 5 using namespace std; 6 LL l, r; 7 LL ans = 0; 8 int n, a[maxn]; 9 LL mi = INF, d[maxn]; 10 LL...
阅读全文
摘要:题目中要求的就是: 组合数学稍作推证可知: 剩余部分就是裸的Lucas定理了。 Luca定理的叙述如下: 递归写法: (另附数论好题:http://www.cnblogs.com/linyujun/p/5199684.html) 代码实现:
阅读全文
摘要:题目大意: 给定N个数列,数字的范围是1-m,想通过操作使得n个数列是字典序不降的。 操作如下:可以取某个数字x,使得n个数列里的x全部变成大写。 数字间的大小比较是这样的: 大小比所有的小写都要小,如果大小写相同,按照数字大小比较。 求一种可行的改变方案,使得n个数列是字典树不降的。 题目分析:
阅读全文
摘要:http://blog.csdn.net/consciousman/article/details/51407514
阅读全文
摘要:题意:给定一个整数n,求出有多少对整数a,b满足1<=b<=a<=n且gcd(a,b)=a XOR b. 分析:最容易想到的方法是枚举a,b,双重循环加上求gcd,总复杂度为O(n*n*logn),绝对无法承受。如何减少枚举呢?注意到亦或运算的性质,如果a^b=c,那么a^c=b,既然c为a,b的最
阅读全文
摘要:题目大意:给定一个连通图,如果(u,v)点集,存在一条经过三条不重复边的路径连接u,v,则可以连接u,v一条边,问最多能连多少边。 题目分析:考虑新增加一条边的影响,不难发现,会影响全图的所有点,所以要从最终形成的图的性质考虑。 如果原图是个二分图,则新增的边只会在两个点集之间,而且会成为完全二分图
阅读全文
摘要:二维线段树最主要用于平面统计问题。类似一维线段树,最经典的就是求区间最值(或区间和),推广到二维,求得就是矩形区域最值(或矩形区域和),对于矩形区域和,二维树状数组更加高效,而矩形区域最值,更加高效的方法是二维RMQ,但是二维RMQ不支持动态更新,所以二维线段树还是有用武之地的。
阅读全文
摘要:题意:红蓝粉村庄分别有a,b,c个,建桥要求同色的村庄,要么不可达,要么最短路至少为3,问建立道路的方案数。 分析:题意很明显就是,同色村庄内部不能连边,只能异色村庄染色,而且要保证是个偶图。 那其实就是问分别为(a,b) (a,c) (b,c)的点集,偶图的数目,组合数搞一下就好了。 注意取模,大
阅读全文