上一页 1 2 3 4 5 6 7 ··· 11 下一页
  2012年8月21日
摘要: 随着对线段树的认识,我的重点放在了,这个线段树里每个元素所代表的意义上了。这道题我们把每一层看作一个空间,随着往里面放广告,空间越来越小,而线段树所标示的意义就是剩余空间,通过像二分一样的去查找,将时间按复杂度降下来。 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 220000 4 5 int h, w, n, D, tree[MAXN<<2]; 6 int max(int a, int b) 7 { 8 if(a > b) return a; 9 else return b;10 }1 阅读全文
posted @ 2012-08-21 23:05 BFP 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 这道题一开始看题,没有什么思路,也是学习线段树以来第一次接触这样的题,后来通过查找资料了解到,这是线段树一个求逆序对的应用,通过学习这方面的知识,总结出可以将它转化为求区间和或者是求区间内1的个数这样一个基本的形式。这道题我们可以这样想,求逆序对也就是找后面的点比当前点小的这些点的个数的总和,另外我们也可以反过来找前面的点比当前点大的这些点的个数的总和。我用的后面的思路,可能会简单一些吧,每当输入一个值的时候,query一下,找到前面输入的比他大的点的总数,然后将此值赋值为1,updata一下。 1 #include<stdio.h> 2 #include<string.h& 阅读全文
posted @ 2012-08-21 17:22 BFP 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 线段树基础题: 1 #include<stdio.h> 2 #include<string.h> 3 #define INF 0x7fffffff 4 #define MAXN 800000 5 int N, M, D, tree[MAXN]; 6 7 int max(int a, int b) 8 { 9 if(a>b) return a;10 else return b;11 }12 13 void updata(int cur)14 {15 for(int i = (D+cur>>1); i^1; i >>= 1)16 tree[i] 阅读全文
posted @ 2012-08-21 09:49 BFP 阅读(153) 评论(0) 推荐(0) 编辑
  2012年8月20日
摘要: 线段树基础题: 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 200000+100 4 5 int T, N, D, tree[MAXN], num; 6 char s[10]; 7 8 void updata(int cur, int j) 9 {10 for(int i = D+cur; i^1; i >>= 1)11 tree[i] += j;12 }13 14 int query(int x, int y)15 {16 int i = D+x-1, j = D+y+1,ans = 0; 阅读全文
posted @ 2012-08-20 17:14 BFP 阅读(148) 评论(0) 推荐(0) 编辑
  2012年8月8日
摘要: 确定用二分图算法,就找好对应关系,本题对应关系为一周的所有课节N=7*12,和每一科的对应。 1 //1274,2239,2584,2536,2446 2 //http://wenku.baidu.com/view/9962910590c69ec3d5bb75da.html 贪心最大二分匹配 3 //匈牙利树和增广轨 4 5 #include <cstdio> 6 #include <cstring> 7 8 int used[610]; //是否在覆盖点中 9 10 int nmap[610][610];11 12 int path[610];//前一个13 14 i 阅读全文
posted @ 2012-08-08 11:01 BFP 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 二分图,匈牙利算法: 1 //1274,2239,2584,2536,2446 2 //http://wenku.baidu.com/view/9962910590c69ec3d5bb75da.html 贪心最大二分匹配 3 //匈牙利树和增广轨 4 5 #include <cstdio> 6 #include <cstring> 7 8 int used[610]; //是否在覆盖点中 9 10 int nmap[610][610];11 12 int path[610];//前一个13 14 int P,N;15 16 int cross(int k)17 {18 阅读全文
posted @ 2012-08-08 10:39 BFP 阅读(182) 评论(0) 推荐(0) 编辑
  2012年8月7日
摘要: 强联通分量模版题,tarjan算法: 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 110 4 5 int n, p, ans1, ans2, u[MAXN*MAXN], v[MAXN*MAXN], next[MAXN*MAXN], first[MAXN]; 6 int dfn[MAXN], low[MAXN], col[MAXN], stk[MAXN], ins[MAXN], ind, top, cols, tmp; 7 int indg[MAXN], outdg[MAXN], zeroin, zero 阅读全文
posted @ 2012-08-07 10:12 BFP 阅读(179) 评论(0) 推荐(0) 编辑
  2012年8月5日
摘要: 简单的模板题:prim算法适合浓密图: 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 110 4 #define INF 100000000 5 6 int n, v[MAXN], low[MAXN], w[MAXN][MAXN]; 7 8 void solve() 9 {10 int ans = 0;11 memset(v,0,sizeof(v));12 v[0] = 1;13 for(int i = 1; i < n; i ++) low[i] = w[0]... 阅读全文
posted @ 2012-08-05 12:40 BFP 阅读(146) 评论(0) 推荐(0) 编辑
  2012年8月4日
摘要: 用kruskal()算法处理》》。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define MAXN 300000 4 5 int T, n, h, u[MAXN], v[MAXN], w[MAXN], p[510], r[MAXN]; 6 7 int cmp(const void *_p, const void *_q) 8 { 9 int *p = (int *)_p;10 int *q = (int *)_q;11 return w[*p] - w[*q];12 }13 14 int find(int x){ret.. 阅读全文
posted @ 2012-08-04 11:11 BFP 阅读(121) 评论(0) 推荐(0) 编辑
摘要: prim求最小生成树。 1 #include<stdio.h> 2 #include<string.h> 3 #define INF 100000000 4 #define MAXN 2100 5 6 int n, v[MAXN], low[MAXN], d[MAXN][MAXN]; 7 char s[MAXN][10]; 8 9 void prim()10 {11 int ans = 0;12 memset(v, 0, sizeof(v));13 v[0] = 1;14 for(int i = 1; i < n; i ++) low[i] = d[0][i... 阅读全文
posted @ 2012-08-04 10:32 BFP 阅读(93) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页