poj
文章平均质量分 62
贱走偏锋
朝着梦想努力吧
展开
-
poj 1002 487-3279
水题一道,耗时45分钟。喷我吧。。 出现的错误:输出前三位数的时候要用%03d防止前置的零。。= =!加油 #include #include #include #include using namespace std; map mp; int tran(char *str){ int ans = 0; for(int i = 0;str[i];i++){ if(str[i原创 2012-01-16 17:53:33 · 841 阅读 · 0 评论 -
poj 2516 Minimum Cost KM算法 最小权值匹配
一开始想到了就是拆点,题目说每个人对每种goods的需求都是只有0-3,我是从这个想到的。。。 接下来就是建立模型拉。然后就是KM算法。。 #include #include #include #include using namespace std; int shop[51][51]; int store[51][51]; int cost[51][51][51];原创 2012-03-16 12:02:15 · 1499 阅读 · 0 评论 -
poj 3368 Frequent values(线段树+离散化) -
第一步就死离散化,现在才开始接触。。乃琦神牛要我一定要做几题,我也就试试罗。 对于相同的数,记录起点和终点,记录出现的次数,缩成一个点。就可以建线段树。 还要注意如果给出的点不是起点,那么这个点连续的一段相同的要先算出来。。 而且这道题没有动态变化。个人觉得RMQ一样可以过。。。。下次有空试一下。 不过正在学线段树,就做一下线段树的吧。 #include #include #incl原创 2012-04-09 02:46:05 · 437 阅读 · 0 评论 -
poj 1195
第一次写二维树状数组,纪念一下 #include #include #include #include using namespace std; long long c[1025][1025]; int s; int lowbit(int i){ return (i&(-i)); } void update(int x,int y,long long val){ for原创 2012-04-23 23:35:03 · 376 阅读 · 0 评论 -
poj 1698 二分图的匹配
简单的建图,X部是每部电影需要的天数之和,Y部是时间,建立二分图,然后就是匈牙利了。。。因为一开始乱初始化。。。match要-1的,我是从0开始计数的。。。Wa了超久。、。。。郁闷 #include #include #include using namespace std; const int MAXN = 51*51; const int MAXM = 51*51; bool m原创 2012-04-19 22:56:29 · 409 阅读 · 0 评论 -
poj 1743 Musical Theme
主要是使用后缀数组,参考《后缀数组----处理字符串的有力工具》 sa[i]表示排名第i的后缀是哪个 可以得到height[i]数组:表示sa[i]和sa[i-1]的子串的最大长度。 然后怎么找到最大的解呢,首先就是二分答案k,然后按照顺序按照hight[i]>=k分组,每一组里面j个height里面总共j+1个sa,如果里面最小和最大的差>=k,那么就找到了长度为k并且不重叠的公共字符串。原创 2012-04-21 03:47:39 · 442 阅读 · 0 评论 -
poj 3321 apple tree
数组数组以及树形转线性 #include #include #include using namespace std; const int maxn = 210000; int c[maxn]; int head[maxn]; int nxt[maxn]; int e[maxn]; int tot = 1; int n; int fir[maxn]; int last[m原创 2012-04-23 19:12:36 · 388 阅读 · 0 评论 -
poj 1042Gone Fishing
贪心算法+枚举 枚举最远到达那个湖i,先把总时间减去走到湖i的时间,剩下的可以看做在i个湖里每次拿一个最大的,用了一个自定义的堆结构 #include #include #include #include using namespace std; struct node{ int num; int loca; node(int nn = 0,int ll = 0){ num原创 2012-10-17 09:14:22 · 503 阅读 · 0 评论 -
划分树 poj 2104
划分树 划分树的定义 它的每一个节点保存区间[lft, rht]所有元素,元素排列顺序与原数组(输入)相同,但是,两个子树的元素为该节点所有元素排序后 rht−lft +1 / 2个进入左子树,其余的到右子树,同时维护一个num域,num[i] 表示lft 到i这些点有多少进入了左子树。 数据结构 int Sort[M];//排完序的数组,便于后面查找一段线段的最中间的数 stru原创 2013-01-21 01:45:12 · 483 阅读 · 0 评论 -
POJ 2503 Babelfish
题目大意很简单,就是给你字典的对应信息,然后给你查询条件要求你输出字典查询结果,如果字符串没有在字典中则输出"eh"。 #include #include #include #include #include using namespace std; map mp; char str[100]; char source[12]; char d[1000010][12]; i原创 2012-02-10 22:05:56 · 398 阅读 · 0 评论 -
poj 2983Is the Information Reliable?
差分约束用SPFA判断是否存在负数环 p的时候就是就是dis[B]- dis[A]>=w,dis[B]-dis[A]=dis[A]+1 题目虽然没说A,B是1-n但是按照这样做过了。。。- -!!如果要的话,就hash一下呗 code: #include #include #include #include #include #include using namespace s原创 2012-02-09 13:49:27 · 489 阅读 · 0 评论 -
3169 Layout
简单的差分约束 看错成一个图,dis[B]-dis[A]=W,然后求出图的最短距离,用bellman-ford算法就可以了 判断图是否有负环,输出-1,否则判断n和1是否可达,如果不行输出-2.否则输出最短距离。 #include #include #include #include #include using namespace std; const int N =1010;原创 2012-02-09 18:38:21 · 431 阅读 · 0 评论 -
poj 1003
#include using namespace std; int main(){ double f; while(cin >>f,f>1e-3){ double sum = 0.0; int i; for( i = 2;;i++){ if(f sum+=1/(double)i; } printf("%d card(s)\n",i-2); } return 0; }原创 2012-01-16 21:47:38 · 361 阅读 · 0 评论 -
poj 1001Exponentiation
好久没有敲代码了,这么水的一题我敲了2个小时= =! 主要考察高精度算法,注意判定条件,给定小数位,什么时候改把零省略,什么时候不可以。只有是在整数部分的前置零可以省略,结尾的零最后输出地时候处理一下。写得好丑啊~~~~ #include #include #include using namespace std; const int N = 200; class Bign{原创 2012-01-16 15:58:50 · 349 阅读 · 0 评论 -
POJ 1006 Biorhythms
太水了,考完试就忘记剩余定理- -! 这道题完全就是考你中国剩余定理 (中国剩余定理CRT)设m1,m2,...,mk是两两互素的正整数,即gcd(mi, mj) =1, i≠j, i,j = 1,2,...,k 则同余方程组: x≡b1 (mod m1) x≡b2 (mod m2) ... x≡bk (mod mk)原创 2012-01-18 14:46:59 · 483 阅读 · 0 评论 -
POJ 1012
约瑟夫的变形,f[i]表示第i次出列的人的编号 推倒公式为f[i] = (f[i-1]+m-1)%(n-i+1); i表示的是第几次出列,不是下面程序的i- -!!! 代码如下: #include #include #include #include #include using namespace std; int ans[15]; int solve(int k){ i原创 2012-01-22 12:32:54 · 447 阅读 · 0 评论 -
poj 3264
转自大牛分析: RMQ(RangeMinimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询原创 2012-02-06 15:39:27 · 536 阅读 · 0 评论 -
poj Number Sequence
主要先大概确定数的范围,才26368左右,可以先枚举到i总共有多少个数字,然后确定最后一个数。。。 #include #include #include #include #include using namespace std; long long a[100001]; long long d[100001]; int f(int n){ int k = 0; whi原创 2012-02-04 22:35:07 · 510 阅读 · 0 评论 -
SPFA算法 poj 1364
求单源最短路的SPFA算法的全称是:ShortestPath Faster Algorithm。 最短路径快速算法-SPFA算法是西南交通大学段凡丁于1994年发表的。 适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。我们约定有向加权图G不存在负权回路,即最短路径一定存在。当然,我们可以在执行该原创 2012-02-08 20:56:51 · 897 阅读 · 0 评论 -
差分约束
看了网上一下内容,整理出来供大家参考,其实想想最小值怎么写,求最大值怎么写,这个我觉得蛮有意思的。 1.问题定义 差分约束系统属于线性规划问题。在一个差分约束系统中,线性规划矩阵A的每一行包含一个1和一个-1,A的所有其他元素都为0。因此,由Ax≤b给出的约束条件是m个差分约束集合,其中包含n个未知元。每个约束条件为如下形式的简单线性不等式:xj-xi≤bk(1≤i, j≤n,1≤k≤原创 2012-02-08 20:59:06 · 5641 阅读 · 1 评论 -
poj 2828 Buy Tickets
题目的意思是给出一些人插队的顺序,求出最后插完的队列结果 可以用反向推到的方法,最后一个插入的点,前面有pos[n-1]个座位,以此类推 可以想到用线段树的方法记录一个线段的座位的个数,不断地更新线段树 顺便介绍一个线段树的文章:http://www.notonlysuccess.com/index.php/segment-tree-complete/ #include #include原创 2013-06-05 00:50:07 · 615 阅读 · 0 评论