上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 32 下一页
摘要: 1 /* 2 又是一道差分约束题,通过这道题让我更加理解了差分约束。 3 差分约束的关键是 要充分利用所给条件 4 建立数组的 逻辑意义 如此题的dis[]数组(s[]数组) 建立差分约束系统即(找出差分约束关系), 5 6 7 注:看了2006冯威的论文。整理如下: 设num[i]为i时刻能够开始工作的人数,x[i]为实际雇佣的人数, 设r[i]为i时刻至少需要工作的人数, s[I]=x[1]+x[2]…+x[I] 有如下关系: x[I]<=num[I] x[I-7]+x[I-6]+x[I-5]+x[I-4]+x[I-3]+x[I-2]+x[I-1... 阅读全文
posted @ 2012-04-29 11:30 Szz 阅读(736) 评论(0) 推荐(0)
摘要: 1 http://poj.org/problem?id=3159 有一批糖果要由班长flymouse分发给班里的小朋友,给出m对数据u,v,w,表示第v个小朋友最多比第u个小朋友多w个,但flymouse与snoopy不和,所以在满足上述约束的条件下,flymouse要尽量比snoopy多。snoopy标号1,flymouse标号n/* 2 终于 把这道题过了 ,wa了n次,spfa+队列 会 超时,tmd,改了 spfa+stack 3 spfa差分约束,dis[i]为第i人得到的糖果数目。对于每个约束管理就能列出不等式: 4 dis[a]>=dis[b]-c,就能转化为dis[b]. 阅读全文
posted @ 2012-04-26 16:54 Szz 阅读(150) 评论(0) 推荐(0)
摘要: 1 http://poj.org/problem?id=2983 2 判断是否存在负权回路,差分约束条件 有 3 A 到B的距离一定是 X 4 所以要 表示出来就是 insert(A,B,-x); 5 insert(B,A,x); 6 #include<stdio.h> 7 #include<vector> 8 #include<iostream> 9 #include<queue> 10 #include<string.h> 11 using namespace std; 12 const int N=2000; 13 int n; 阅读全文
posted @ 2012-04-25 21:16 Szz 阅读(183) 评论(0) 推荐(0)
摘要: 1 /* 2 http://poj.org/problem?id=1201 3 题目的转换真的非常非常巧妙,让我再来梳理一下。本题的题意是给了我们一些区间,然后告诉每个区间中至少需要取Ci个数。 4 求出满足n个条件的集合C的最少的元素个数。 5 用dis[i+1]表示从最小值min 到i所选得最小数 6 则有 dis[i]-dis[j]<=-W(i,j); 7 此外还必须加上 8 1>=dis[i+1]-dis[i]>=0; 9 这样就构成了完整的差分约束系统10 */11 #include<stdio.h>12 #include<vector>13 阅读全文
posted @ 2012-04-25 17:08 Szz 阅读(181) 评论(0) 推荐(0)
摘要: 1 差分约束系统 2 加一个源点s指向所有点边权为0, 3 加一个汇点t,所有点指向t边权为0, 4 u和v安全距离为w,则加边v->u,边权为-w 5 (因为 u-v>=w 所以v-u<=-w ) 6 求s到t最短路即可。 7 http://acm.hdu.edu.cn/showproblem.php?pid=4109 8 #include<stdio.h> 9 const int N=10000;10 #define max 99999911 int dis[N],num,n;12 struct node13 {14 int b;15 int e;16 int 阅读全文
posted @ 2012-04-24 17:36 Szz 阅读(285) 评论(0) 推荐(0)
摘要: 1 /* 2 题意 : 3 改变矩阵中元素值 ,求子矩阵的和 4 二维树状数组, 5 */ 6 7 #include<stdio.h> 8 #define N 1050 9 int s;10 int map[N][N];11 int lowbit(int x)12 {13 return x&(-x);14 }15 void add(int x,int y,int d)16 {17 int i=x;18 int j=y;19 while(i<=s)20 {21 j=y;22 while(j<=s)23 ... 阅读全文
posted @ 2012-04-20 18:57 Szz 阅读(171) 评论(0) 推荐(0)
摘要: 1 #include<stdio.h> 2 #include<string.h> 3 #define N 600000 4 int n; 5 int a[N],c[N]; 6 int lowbit(int x) 7 { 8 return x&(-x); 9 }10 int sum(int k)11 {12 int ans=0;13 while(k>0)14 {15 ans+=c[k];16 k=k-lowbit(k);17 }18 return ans;19 }20 int add(int pos ,int nu... 阅读全文
posted @ 2012-04-20 17:04 Szz 阅读(190) 评论(0) 推荐(0)
摘要: 1 概述 2 3 树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n], 用lowbit函数维护了一个树的结构那么查询a[1]+...+a[n]的时间是log级别的,而且是一个在线的数据结构, 4 支持随时修改某个元素的值,复杂度也为log级别。 5 来观察这个图: 6 令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现: 7 C1 = A1 8 C2 = A1 + A2 9 C3 = A310 C4 = A1 + A2 + A3 + A411 C5 = A512 C6 = A5 +... 阅读全文
posted @ 2012-04-20 16:57 Szz 阅读(395) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=2750/*问题描述:给定一个环形序列,进行在线操作,每次修改一个元素,输出环上的最大连续子列的和,但不能是完全序列。算法:把环从一个地方,切断拉成一条直线,用线段树记录当前区间的非空最大子列和当前区间的非空最小子列。动态规划解决过静态的序列最大连续子序列和问题,时间复杂度可以达到 n(环形序列可能复杂度更高)。但是这里涉及到动态更新,更新频度很大,如果计算子序列和复杂度仍然是n,就会非常耗时。如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列;否则,答案是:max{根结点的非空最大子列, 环上数的总和-根结点的非空最小子列} 阅读全文
posted @ 2012-04-19 21:40 Szz 阅读(434) 评论(0) 推荐(0)
摘要: 前两天去试了一下腾讯。或许很多人不喜欢腾讯,但是不得不说他是中国互联网的一个标志。家里人不懂IT,你说我在qq工作,肯定也稍稍有些自豪感。无论工作环境、待遇,我想都是大多数人想要的。很不幸,我被腾讯狠狠的鄙视了。先是笔试,老长的一张卷子。两部分题目,选择题和程序填空题。因为签过保密协议,细节就不多说。卷子考察的内容涉及到所有你本科所学到的知识,具体来说是这几门课:数据结构、算法、操作系统、数据库、计算机组成原理等。前三门占的内容最多。没有什么开放性试题(不过有附加题,但是也不怎么开放。。。)。也就是说,考察的都是基础。不管你投的是开发还是测试,题目都是一样的,更别提具体投的是哪个方向了。程序填 阅读全文
posted @ 2012-04-18 21:21 Szz 阅读(233) 评论(0) 推荐(0)
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 32 下一页