自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(33)
  • 收藏
  • 关注

原创 strcmp函数的实现

int __cdecl strcmp ( const char * src, const char * dst ){ int ret = 0 ; while( ! (ret = *(unsigne

2011-09-27 13:33:35 861

原创 hdu 3265 Posters(扫描线)

题意:给出几个缕空的矩形,要求他们的面积的并。把一个矩形拆成四个矩形,那么直接就可以套用前面的了。有几个需要注意的地方,答案会超int。如果直接更新到叶子结点,会超时。因为x1#include #include #include using namespac

2011-09-27 01:30:06 970

原创 POJ 1177 Picture & hdu 1828 Picture(扫描线)

题意:给你n个矩形,要你求出矩形并的轮廓周长。在做这题之前,建议先解决POJ1151。在求矩形并面积的时候,我们记录了线段投影到y轴上被覆盖的长度,这题同样要记录这个值以得到y轴上属于轮廓的边长(当然,不是简单地把这个长加进去,而是加变化值)。不同的是,还要记录,y轴上有连续的几段。比如,这时候有两个线段,线段a(line[i]表示),线段b(line[i-1]),a和b并不相邻,即这时候

2011-09-27 00:06:28 2354

原创 POJ 1151 Atlantis(扫描线)

题意:给你n个矩形,每个矩形给出左下点的坐标,右上点的坐标。最后以n=0为结束。要你求出矩形并后的面积。         扫描线。 在陈宏的论文里这么定义超元线段:根据每个矩形纵向边的横坐标纵向地对平面进行2*n次切割、根据矩形横向边的纵坐标横向地对矩形进行2*n次切割(n为矩形个数),切割后得到的矩形的被切割后的小段边就是超元线段。         现在我们仅考虑未被横向的边切割的超元线

2011-09-26 12:38:45 3645 2

原创 hdu 2871 Memory Control(成段更新,区间合并)

题意:给n个单位内存(编号从1开始),有几种操作:Reset把所有的内存清空,然后输出“Reset Now”。New x申请一块长度为x的内存块(如多解,左边优先),然后输出“New at A”。Free x把包含第x块单位内存的内存块清除,然后输出“Free from A to B”。Get x返回第x块内存块的起始内存单位编号,然后输出 “Get at A”。        大部分操作和P

2011-09-25 22:49:43 1470

原创 hdu 1540 Tunnel Warfare(单点更新,区间合并)

题意:给你n连成一条线的点,m个操作。D x把第x个村庄破坏,Q x查询与第x个村庄直接和间接相连的村庄数目(包括它自己),R把最早破坏的一个村庄恢复。        除了下面的另一种方法外,现在再做的时候,想到了另一种方法,在查询的时候,更新查找到的范围的左右端点。/*代码风格更新后*/#include #include #include #include using name

2011-09-25 21:49:42 1251

原创 POJ 3667 Hotel(成段更新,区间合并)

题意:有N个房间,M次操作。1 a表示找到连续的长度为a的空房间,如果有多解,优先左边的,即表示入住。2 b len把起点为b长度的len的房间清空,即退房。用co作为延迟标记,如果为-1表示当前区间是两个状态,如果是0表示一种状态,即区间内都没有人入住,如果是1也表示一种状态,表示满客。在线段树节点里保存三个值,端点左边的(lmx)、右边的(rmx)最长的连续的空闲的房间数,总的空闲的房间数

2011-09-25 19:42:32 1962

原创 hdu 3308 LCIS(单点更新,区间合并)

题意:给你n个整数,有两种操作,U A B把第A个数变成B,Q A B查询区间[A,B]的最长连续上升序列。         在线段树的节点里保留了端点的值即lval,rval。同时维护左端点最长的上长序列的长度lmx,右端点的最长的下降序列的长度rmx,以及这个区间的最长上升序列的长度mx。在合并区间的时候,如果当前区间的左儿子的lmx等于左儿子的区间长度,那么当前区间的lmx还要加上右儿子

2011-09-25 19:05:49 1746

原创 hdu 3397 Sequence operation(区间合并)

题意:首先t表示有几组数据,然后n,m表示有n个数,m组操作,接着给你n个0或1的数字,,最后是操作0 a b表示把区间[a,b]里的数都变成0,1 a b把区间[a,b]里的数都变成1,2 a b表示把区间[a,b]里的1变成0,0变成1,3 a b表示[a,b]输出1的数目,4 a b表示输出最长的连续的1的数目。区间合并的问题,因为最长的可能的除了可能出现在端点,还有可能出现在区间合并时

2011-09-25 18:12:24 1513

原创 POJ 3468 A Simple Problem with Integers(成段更新)

题意:题目给你n个数,m个操作,接下来一行给你这n个数,接下的几行给出m个操作,Q a b 表示查询区间[a,b]里的数和和。U a b c 表示把区间[a,b]里的数都加上c。同样使用延迟标记add。当add不等于0的时候,表示它以下所有区间都需要更新。因为我们没有去改变原始查询区间的区间端点,所以当找到一个区间小于等于查询区间的时候,标记它的延迟标记,返回。注意,因为有可能多次对同一个区间

2011-09-24 23:46:33 2964

原创 hdu 1698 Just a Hook(成段更新)

题意:有t组测试数据,n为钩子长度(1       使用了延迟标记type,表示当前区间的左右子儿子的价值为type,在更新到当前区间时,同时更新当前区间的valu,即type*当前区间的长度。/*代码风格更新后*/#include #include #include using namespace std;#define LL(x) (x<<1)#define RR(x)

2011-09-24 22:55:52 2686

原创 POJ 2828 Buy Tickets(单点更新)

题意:有n个的排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出。逆向思维。我们可以这样考虑,最后一个人一定会得到当前队伍他想要的位置,如果我们往前一个阶段,倒数第二个人也一定能得到他想要的位置……,也就是说,我们可以这样处理,我们把最后一个人插入,然后忽略它,再把倒数第二个人插入。即,我们找出当前队伍他想要插入的位置pos的真正坐标就

2011-09-24 22:25:06 2091 1

原创 uva 400 Unix ls

题意:给你一堆文件名,要你以列优先输出,每个文件名的长度是最大的那个文件名的长度(也就是是长度不够的,你要在它后面加些空格),且同一行的两个文件名之间还要有两个空格。#include #include #include #include using namespace

2011-09-24 13:54:24 1238

原创 uva 123 Searching Quickly

题意:给你些要忽略的单词,然后给你几个句子,找出非忽略单词,然后按照非忽略单词的字典序输出非忽略单词所在的句子,注意,非忽略单词要大写民,其他单词要小写,如果一个句子中出现多个非忽略单词,先输出左边的,再输出右边的。感觉做得比较麻烦,把句子拆成单词,先找出非忽略单词,然后再用

2011-09-24 13:20:47 1205

原创 uva 10194 Football (aka Soccer)

题意:给你比赛的情况,要你给出一个排名,排名先按积分高低,赢的次数多寡,赢的球减去输的球的值的高低,赢的球的多寡,打的比赛最少,最后按字典序输出(这里特别注意是不区间大小写的)。#include #include #include #include #includ

2011-09-23 16:16:52 1020

原创 uva 755 487--3279

题意:给你字母对应的数字,和包含字母与数字的字符串,要你把它们转化成标准格式(即只包含数字且数字中间含‘-’),然后输出有重复出来的,且输出它们的重复次数。要注意的是,可以出现全部是0的字符串,还有边界的处理也要小心(比较最后一个和倒数第二个也相同的情况)。#includ

2011-09-22 23:53:24 753

原创 uva 10785 The Mad Numerologist

题意:题目给了每个字母权值,然后给你所要的字符串的长度,要你输出一个权值最小的,并规定奇数位上只能是辅音字母,偶数位上只能是原音字母,然后比较坑人的是,在保证权值最小的情况下,还要字典序最小。#include #include #include #include us

2011-09-22 23:11:25 819

原创 uva 156 Ananagrams

题意:要你找出这样的单词,单词里面的字母不区分大小写,然后字母重排之后只出现一次的单词,找出之后,还是输入的样子以字典序输出(用来存放单词的个数起先用100WA了,开到1000AC。。。)#include #include #include #include

2011-09-22 01:00:36 975

原创 uva 120 Stacks of Flapjacks

题意:给你一串数字,按照一个规则从小到大排序,规则是:你只能选择一个位置,然后把这个位置以上的全部数字反过来。先排序,然后从后往前扫,如果不是排序后的位置,则往前找,找到了,如果不是在0位置,那么,把它先翻到0位置,然后再翻回来。#include #include #

2011-09-21 23:57:07 1173

原创 uva 299 Train Swapping

题意:计算逆序对的个数。#include #include #include using namespace std;int a[60];int main(){ int t; scanf("%d",&t); while(t--) {

2011-09-20 22:45:12 609

原创 uva 152 Tree's a Crowd

题意:给你空间中的几个点,要你找出与当前点距离最小的点(幸好题意数据量不太大。。)#include #include #include #include using namespace std;struct node{ double a,b,c;}tre

2011-09-20 22:38:40 707

原创 uva 10474 Where is the Marble?

题意:给你n个数字,然后查询m个数字在n个数字排序后的位置。#include #include #include #include using namespace std;const int N=10005;int a[N];int main(){ i

2011-09-20 22:25:34 447

原创 uva 340 Master-Mind Hints

题意:题目给出一个目标串,然后附后给出几个串(只由1到9构成),要你找出,位置相同且数字相同的有多少个(即strong),位置不同,但数字相同的有多少个(即weak)。注意每个数字只有用一次。因为只有1到9所以开两个数字,找出每个数字出现了多少次,然后两个数组对比,每次取小的

2011-09-20 22:11:23 398

原创 uva 10420 List of Conquests

题意:给你N个串,每个串的第一个单词表示国家,后面的M单词(M>=1)表示女人,要你找出每个国家出现了几个女人。用STL的map将国家映射成数字,然后再放到set里。#include #include #include #include #include #in

2011-09-20 22:10:56 451

原创 uva 10115 Automatic Editing

题意:给你一个字符串str1与替代其的字符串str2,然后给你一个串A,然后要你把A中出现str1的全部用str2替换,替换的方法是如果出现的一个马上替换,然后再从头找起,如果在串A中找不到当前的str1了,再换下一个str1。#include #include #i

2011-09-20 16:51:44 433

原创 uva 644 Immediate Decodability

题意:给你一些串,要你判断是否存在一个串是另一个串的前缀。#include #include #include #include using namespace std;char str[100][100];int cmp(const void *a,cons

2011-09-20 13:39:09 438

原创 uva 10815 Andy's First Dictionary

题意:给你数个字符串,要你把字符串中的所以出现单词,不重复的按字典序输出。#include #include #include #include #include using namespace std;int main(){ char word[1000]

2011-09-19 23:20:48 485

原创 uva 409 Excuses, Excuses!

题意:给你一系列的关键单词,然后给你几个借口,要你找出含有关键单词最多借口,如果有多个,可以按任意顺序输出。#include #include #include using namespace std;struct node{ char str[100]

2011-09-19 22:43:50 721

原创 uva 537 Artificial Intelligence?

题意:给你一个串,然后在p,u,i中任意出现两个,然后你要根据出现的那两个值,计算出第三个值,注意后面可以跟了三种单位。#include #include #include using namespace std;char str[1000];double fu

2011-09-19 22:11:51 741

原创 uva 10361 Automatic Poetry

题意:给你两个串,要你把第一个串中的第一个的内容在第二个串的...部分交换输出。#include #include #include #include using namespace std;char str[1000];int main(){ in

2011-09-19 18:31:31 593

原创 uva 10010 Where's Waldorf?

题意;给你一个字符串数组,然后给你几个字符串,要你找出这几个字符串在字符串数组中出现的位置。如果有多个重要的,输出最左边的,如果还是有重复的输出最上面的。特别注意要要求的输出格式就行了#include #include #include using na

2011-09-19 17:59:29 944

原创 uva 401 - Palindromes

题目大意:给你一个串要你判断,从左到右读和从右到左读是否相同( regular palindrome ),把这个串根据题目中给出的对应关系是否也满足前面的条件(mirrored string),是否同时满足前面两个条件(mirrored palindrome)。直接用st

2011-09-19 16:57:15 476

转载 qsort的用法

qsort用法By Snoopy发信人: snoopy (阿排/好好玩ICPC~), 信区: ACM_ICPC标   题: 快排qsort的用法详解发信站: 珞珈山水BBS站 (Sat Apr 29 21:02:35 2006), 转信很多人问这个

2011-09-09 02:12:52 572

空空如也

空空如也

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

TA关注的人

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