摘要: 题目描述A sequence of N positive integers (10 #include using namespace std;const int maxn = 100005;int length(int *a,int len,int k) { int top = 0,mini = maxn; int sum = 0; int pos = 0; while (top = k) { mini = min (mini,top-pos); sum -= a[pos++]; } if (top... 阅读全文
posted @ 2014-02-18 21:20 闪光阳 阅读(177) 评论(0) 推荐(0) 编辑
摘要: //upper_bound 在数列1 2 3 4 5 6中 upper_bound(3) 返回的位置为4//lower_bound 返回的值为3//此算法 是 贪心和二分查找的升级版#include #include #include using namespace std;const int maxn = 100000;int dp[maxn],s[maxn],a[maxn];void DP(int *s,int *dp,int n) { // s 中存的是最长的上升子序列;dp[i]存的是第i个数为结尾的最长上升子序列; int top=0,temp; s[top++] = a... 阅读全文
posted @ 2014-02-18 20:08 闪光阳 阅读(218) 评论(0) 推荐(0) 编辑
摘要: //a * b % c == (a % c) * (b % c)//上面的是一个公式,接下来将介绍另一个公式,在介绍公式之前,先来看一个有关二进制的东西,那10进制数 11 来说 把11转为二进制1011,也就是2^3 + 2^1 + 2^0;在介绍一个初中的公式,a^(a1+a2+a3+……+an)==a^a1 * a^a2 * a^a3 *……* a^an;好有了这些预备知识,现在来讲重点//要求 a ^ b % c 这个结果该怎么做呢? 首先将 b 拆成 二进制,然后就会出现a1+a2+a3+……+an,所以a ^ b % c == a ^ (a1 + a2 +a3+……+an) % . 阅读全文
posted @ 2014-02-18 19:05 闪光阳 阅读(170) 评论(0) 推荐(0) 编辑