数据结构
文章平均质量分 53
缘
这个作者很懒,什么都没留下…
展开
-
并查集的全面应用
nyist 209 # include int a[10005],p[10005]; int find(int x) { if(a[x]==x) return x; else a[x]=find(a[x]); } void bin(int x,int y) { x=find(x); y=find(y); if(x>y) a[x]=y; else a[y]=x; }原创 2013-03-20 09:22:55 · 571 阅读 · 0 评论 -
01背包优化
点击打开链接 *01背包的优化for i -> 1 to n 2 do bound -> max(dp[V - sumc[i->n]], c[i]) // 《背包九讲》中这里笔误写错了。 3 for v -> V to bound 4 do */ # include # include int dp[1000005]; int sum[105]; struct bao { int原创 2013-05-03 20:08:47 · 522 阅读 · 0 评论 -
树状数组之插间问点
点击打开链接 # include # include int a[1000005]; int lowbit(int x) { return x&-x; } void update(int x,int y) { while(x>0) { a[x]=a[x]+y;//printf("%d ",a[x]); x=x-lowbit(x); } }原创 2013-03-29 21:56:30 · 463 阅读 · 0 评论 -
线段树
#include # include struct tree { int l; int r; int sum; }s[4*200000]; int a[200005]; int max(int x,int y) { return x>y?x:y; } void build(int l,int r,int cur) { s[cur].l=l; s[原创 2013-04-12 09:23:09 · 525 阅读 · 0 评论 -
线段树
#include # include struct tree { int l; int r; int sum; }s[4*50005]; //注意开4被 int a[50005]; void build(int l,int r,int cur) //建树 { s[cur].l=l; s[cur].r=r; if(l==r) {原创 2013-04-12 09:21:58 · 496 阅读 · 0 评论 -
map容器应用
点击打开链接 #include"iostream" #include"string" #include"map" using namespace std; int main() { string a,b; mapm; cin>>a; while(cin>>a&&a!="END") { cin>>b; m[b]=a; } cin>>a; char tem[3001]; g原创 2013-03-26 12:51:35 · 513 阅读 · 0 评论 -
字典树+静态存储
点击打开链接 # include # include # include using namespace std; struct an { int num; an *next[10]; }; int flag,l; an bao[1000005]; an* creat() { an *p; int i; p=&bao[l]; l++; p原创 2013-03-26 13:00:47 · 602 阅读 · 0 评论 -
字典树
点击打开链接 # include # include # include using namespace std; struct shu { int num; shu *next[30]; }; shu* creat() { shu *p; int i; p=new shu ; p->num=0; for(i=0;i<26;i++)原创 2013-03-26 12:57:46 · 494 阅读 · 0 评论 -
输入外挂
# include # include # include using namespace std; int a[110000][12]; inline int Input() { int res=0,f=1,c; while(!isdigit(c = getchar()) && c!='-'); c=='-' ? f=0 : res=c-'0'; while(is原创 2013-03-20 09:32:03 · 509 阅读 · 0 评论 -
找第k大
名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,觉得很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。(注意这组数中可能有重复值) 解法1:我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,转载 2014-04-09 09:34:58 · 510 阅读 · 0 评论