摘要:/* 题意:给定n,m,然后n个数字,要求一个最小的lim 使得这连续n个数字可以被分为连续的m个集合,每个集合的和都不大于Lim/*#include #include #define range(i,a,b) for (int i=a;ival) return 0; ...
阅读全文
摘要:/* 题意:从一个河岸跳到另外一个河岸,两个河岸之间的距离为l,中间有n个石头,每次只能从河岸和石头或者石头和石头之间跳跃,求去除最多m个石头,使得跳跃的最小距离最大。 要注意,m是可以为0的,n也一样。*/#include #include #include #define range(i,a...
阅读全文
摘要:/* 题意:有n个牛棚,给出他们的位置,有m头牛,安排一种方案,使得相邻牛之间最小距离最大。*/#include #include #include #define range(i,a,b) for (int i=a;i=val) { last = c; ...
阅读全文
摘要:1.lower_bound 查找序列中满足a[i]>=k的i的最小值。 即——将k插入到i位置上,保证仍然满足序列升序,i最小。 假如k比所有都小,则i=1,否则返回n+1 int *Lower_bound(int *l,int *r,int k){ //[l,r)为答案区间 /...
阅读全文
摘要:题意: 给定N个数字,0..9不重复,求由他们组成的两个数字的最小差。 比如给定0 1 2 4 6 7,那么分别构成204和176,差最小。 注:构成的数字0不可以作为首位,除非这个数字就是0.解析: 1.DFS 最裸的算法自然是分别枚举,全排列,但是这样时间效率不是十分好。 优...
阅读全文
摘要:题意: 给定一个N*N的矩阵,由0,1组成,只允许交换相邻的两行,把矩阵转化为下三角矩阵(对角线上方全是0),最少需要多少次交换?(保证可以转化为下三角矩阵)Large: N<=40解析: 假如每一行的1的个数都是不相同的,即,最终答案中的矩阵是唯一的,这就相当于求对给定数组冒泡排序需要几次交...
阅读全文
摘要:题意: 给定两组各n个数,可任意调整同一组数之中数字的顺序,求 sum xi*yi i=1..n的最小值。Small: n2时: 假设最优解中,存在 ya,yb,有b>a且ya>yb(不是按照降序排列的),显然根据n=2,交换他们的位置,就会得到更小的答案。所以,假设正确。 另外,还有很重要的...
阅读全文
摘要:1.划分数 描述:给定数字N,将其划分为不超过K组,求不同的划分的总数(比如4——1 2 1,2 1 1就算做一种划分)2.Dollar Dayz 描述:给定数字N,将其随意划分,但是组成数字不可以超过K,求不同的划分总数。这两者看起来是有不同的。比如对于N=100 K=30的情况。第...
阅读全文
摘要:#include #define maxsize 5000char buf[maxsize];char *head = buf;char *new(int size){ //分配元素字长 //可用内存分配完毕 if (maxsize - (buf - head) < size) return ...
阅读全文