自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 poj 2155 Matrix

<br />一个二维线段树的简单题,开始直接更新到了每一个节点,结果悲剧超时,想想也是,肯定会TLE<br />其实不用跟新每个节点,只用更新到那条线段,然后每次询问的时候也只用只用res^矩形的状态<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月30日, 下午2:55 */#include <cstdlib>#include <stdio.h>#include <algorithm>#def

2011-03-30 16:20:00 502

原创 hdu 1823 Luck and Love

<br />这个题是一个理解二维线段树的好题,其实二维线段树不难<br />先建立一颗线段树,然后每个节点下又有一个线段树,看看代码很容易理解的,以前总不想去看<br />先查找身高符合要求的,然后再查找活泼值符合要求中缘分值最大的<br />代码很简单,只是比普通的线段树多了点<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月30日, 下午12:59 */#include <cstdlib>#incl

2011-03-30 14:45:00 703

原创 poj 2182 Lost Cows

<br />这个题和2828是一样的,如果不不懂的地方看http://blog.csdn.net/Euler_M/archive/2011/03/30/6287853.aspx<br />这个题只是没告诉你第一头牛应该插在那,很简单嘛,第一头牛前面肯定没有牛,所以p[1]=0<br />其它都和2828一样,思想都是反过来想,把pos变成前面有多少个空位<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月30日, 上

2011-03-30 10:30:00 494

原创 poj 2828 Buy Tickets

<br />一个很好的线段树应用的题!<br />题意:有一些人去买票,但是后来的可以插队,插到自己想插的pos。<br />思路:反过来看,pos就变成了前面有多少个空位,这样就可以用线段树了<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月30日, 上午9:47 */#include <cstdlib>#include <stdio.h>#include <algorithm>#define

2011-03-30 10:09:00 626

原创 poj 3368 Frequent values

题意:给你n从小到大的树,查询一个区间的最长的连续长度思路:离散化,转换成rmq问题其实这个题会有三种情况(红色表示你要查询的段)1:-1 -1 11 1 1 3 3 3 3 10 10 10就是你要查询的段,刚好是完整的一段就是只有一个值,那么就是b-a+12:-1 -1 1 1 1 1 3 3 3 3 10 10 10查询区间包含了两段,答案就是这两段最长的一段3:-1 -1 1 1 1 1 3 3 3 3 10 10 10也是最麻烦的一种就是包含了多段,这也是这个题转换的关键我们可以先

2011-03-29 21:50:00 548

原创 poj 1226 Substrings

<br />题意:就是求n个字符串的最长公共子串,子串是可以反转的<br />思路:strstr,kmp爆搜,还可以用后缀数组<br />实测kmp比strstr快,16ms那个是后缀数组的8389284Euler_M1226Accepted368K141MSG++1911B2011-03-28 16:44:598389280Euler_M1226Accepted364K63MSG++1907B2011-03-28 16:44:197957084Euler_M1226Accepted508K16MSC++2

2011-03-28 16:53:00 1156

原创 poj 3080 Blue Jeans

<br />水题,枚举第一个字符串的所有子串,然后去和其他的串匹配,其它地方没什么好多说的,有些细节的地方没注意搞得我wa了好几次。郁闷<br />要注意输出的是字典序小的,这代码写得太丑了<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月27日, 下午7:02 */#include <cstdlib>#include <stdio.h>#include <string.h>using name

2011-03-27 20:41:00 470

原创 poj 2406 1961 简单证明

<br />都是一个类型的题,1961是2406的加强版<br />下面举个例子来说明一下l/(l-next[l])就是重复次数<br />i          1 2 3 4 5  6  7<br />s:        a b c  c c  a  b<br />next:   0 0 0 0 0 1  2<br />l-next[l]=5,就相当于现在我们得到了s的一个子串:abccc<br />显然这里拿abcccab去除abccc的结果是 商1余ab是除不尽的,所以l%(l-next[l])!=0

2011-03-27 18:25:00 1052

原创 poj 2185 Milking Grid

<br />题意:就是给你一个矩阵,问你他能由一个矩阵一直重复得到。求这个矩阵的最小面积<br />这个题是1961 ,2406的加强版,我是用discuss里的方法做的,不懂的可以看看discuss里的方法。自己的思路感觉很乱。<br />最主要就是要理解一个字符串的最小可能重复前缀是l-next[l]。l是字符串的长度。<br />其实结合next的定义很容易想通,next[j]=k,指的是next[1....k]=next[j-k+1...j],那么j-next[j],剩下的就是他的最小可能重复前

2011-03-27 17:28:00 631

原创 poj 1177 Picture 线段树+离散化+线扫描

<br />惭愧啊,还是不怎么懂,主要是lcover,和rcover,看了很多解题报告都没怎么写清楚,看陈宏的论文,感觉自己理解到了,不过写不出代码,悲剧啊。看来是我的iq有问题~<br />下面这个人写的还可以:<br />http://www.cppblog.com/abilitytao/archive/2010/07/21/120927.html<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月24日, 下午

2011-03-24 19:48:00 587

原创 poj 2528 Mayor's posters 正确离散化

<br />理解线段树离散化的好题<br />关于这个题离散化的问题,在discuss里有人说测试数据是错的,如果按照一般的离散化的方法去写有种数据不能过<br />1 10<br />1 5<br />8 10<br />如果像我下面的代码那样写离散化的结果<br />1 4<br />1 2<br />3 4<br />很明显6-7这条线段在离散化时被消除了<br />如果想得到正确的结果其实只用在离散化时修改一下就可以了。<br />如果这两条线段的两个端点是相邻的,cnt++<br />不相邻cnt

2011-03-20 11:51:00 919

原创 Light on or off

<br />一道曾经校赛的题目,也算是线段树的一道很好的题。<br />http://222.196.33.254/oj/showproblem?problem_id=1684<br /> DescriptionThere is N lights on the wall of Dreamone’s house from left to right.Initially,some lights on and some lights<br />off, and we use ‘1’ represented the

2011-03-18 14:30:00 829

原创 hdu 2871 Memory Control

<br />这个题和hotel很像,其中对vector的使用很巧妙,不过还有一点没弄懂,就是那个二分的写法<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月15日, 下午2:18 */#include <cstdlib>#include <stdio.h>#include <string.h>#include <vector>#define N 50005#define max(a,b)

2011-03-15 20:56:00 550

原创 poj 2892 Tunnel Warfare

<br />/* * File: main.cpp * Author: Mi *其实这个题得解法和3667的很相似,用lv,rv分别保存左边连续的个数和右边连续的个数 * 在询问的时候有一点要注意,if(x<=mid) 则要去判断x是不是在T[root<<1].rv中,其实判断的方式就是 * if(x>T[root<<1].r-T[root<<1].rv) 那么就可以说明x在rv中,return T[root<<1].rv+T[root<<1|1].lv因为这样的话 * 就会与

2011-03-15 14:08:00 506

原创 poj 3667 Hotel

/* * File: main.cpp * Author: Mi *关于这个题其实以前也做过一次这个题,但还有有些地方没有弄懂 * 这次又重新拿出来认真看了下,终于搞懂了,对线段树的认识有加深了一步 * 题目意思就不说了 * 分别用lv,rv,cv来表示线段左边剩余的房间数,右边剩余的房间,总共剩余的房间数 * state(0,1,-1)分别表示,没有人住,已经有人住,和其它情况,也就是说这条线段有一部分有人住,一部分没人住 * 比如11000111这么一条线段,1表示

2011-03-14 16:49:00 1132 3

原创 poj 2594 Treasure Exploration

<br />题目意思:就是给你一张有向图,问你最少需要多少个机器人去访问所有的点<br />思路:这个题是一个最小路径覆盖,但这个题里的点是可以走多次的,所以直接建的图还需要用floyd求一下传递闭包<br />/* * File: main.cpp * Author: Mi * * Created on 2011年3月10日, 下午2:56 */#include <cstdlib>#include <stdio.h>#include <string.h>#defi

2011-03-10 15:32:00 437

原创 poj 1274 The Perfect Stall

<br />一个裸的二分图最大匹配。这两天看了下匹配,以前一直以为很难,看了看,发现不是很难,很多题难的地方在于建图。要多做题,多学学不同的建图方式。#include <stdio.h>#include <string.h>#define N 305int map[N][90],pre[N];bool used[N];int n,m=85;bool dfs(int u){ int i; for(i=1;i<=m;i++) { if(!used[i]&&map[u

2011-03-09 14:32:00 453

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除