自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 uva--221--Urban Elevations

哈哈哈,劳资终于过了这题了没算法,就100个房子,暴力判断能不能被挡住。注意一个房子可能被几个房子一起挡住的就情况就可以了,就这这种情况搞了我好几个小时。。#include#include#include#include#define maxn 120using namespace std;struct Build{ int x,y; int wd,dep

2013-06-29 16:18:31 678

原创 POJ--2299--Ultra-QuickSort

题目大意:给出一个数字序列,问冒泡排序需要交换数字的次数。好题啊。。。看着1W多的通过数,以为是水题呢。解题思路,求出序列中的逆序对数就是需要交换的次数,求逆序对数可以用树状数组求,但是题目给的数据范围略大,需要离散化原来的数据。所以第一步:先对原来的数据排序,再离散数据,,用1-N 的数表示出各个数字的大小关系就可以了。第二步:通过树状数组求出逆序对数即可。如果你不知道怎么通过树

2013-06-28 21:57:35 518

原创 POJ--1868--Antiarithmetic?

题目大意:给出一个数字序列,假设这个序列长度为N,序列所有的数字不相同而且小于N。问这个序列有没有子序列构成等差数列解题思路。。。直接看代码吧,简单到爆。O(n^2)的代码居然过了。。。。。。。#include#include#include#define maxn 10030using namespace std;int n,a[maxn],pos[maxn];bool

2013-06-28 21:02:16 663

原创 UVA--1312--Cricket Field

题目大意,给出一个矩形区域,里面有一些点,求出空出的最大的正方形面积。解题思路,每加进一个点就对现有的矩形进行一次切割,上下,左右个两个,最后再统计一下。用的stl里面的队列,UVA上0.5s过了,POJ上过不了,又不想改成数组。。。#include#include#include#includeusing namespace std;struct node{ in

2013-06-28 19:51:17 590

原创 POJ--3141--Distant Galaxy

题目大意:给出100个点的坐标,找一个矩形,让这个矩形的边界包含最多的点解题报告: 考虑矩形的四条边界。枚举矩形的上下边界(O(n^2)),然后从左往右扫描每一条竖线,用三个数组记录扫描到的每一条竖线相关信息(参考下图),left数组表示竖线左边的上下边界(不包括竖线)上的点的总数,on数组保存竖线上点的总数(不包括上下边界上的点),on2数组保存竖线上的点的数量(包括上下边界上的点)。

2013-06-27 13:24:12 754

原创 uva--10391 - Compound Words

题目大意:在一个字典中,找出可以这样一个单词,这个单词可以由字典里的任意两个单词连接而来,而且只能是两个。解题思路:建立一颗字典树,标记字典树的每个节点是否是一个单词的结尾,然后在字典树上查找字典里面的每一个单词,如果这个单词的中间的节点是某个单词的结尾的话,就去查找这个单词剩下的一部分,由于输入已经保证的字典序,所以按照输入的顺序去检查就可以按照字典序输出了。#include#incl

2013-06-25 21:47:00 568

原创 POJ--1281--MANAGER

模拟题,有入队出队操作,每次出队的时候根据不同的策略,选择优先级最小的出队或者优先级最大的出队。两个优先级队列,一个模拟大顶堆,一个模拟小顶堆,出队的时候按照要求出队就可以了。但是用两个队列模拟一个队列有个同步性问题,可以用一个数组vis表示该元素是否已在真实的队列中出列,这样就解决了两个队列模拟一个队列操作的同步问题。详情见代码(个人觉得代码比较挫,要是再复杂一点的模拟题就直接跪了)

2013-06-24 00:19:23 809

原创 POJ--2567--Code the Tree

直接 模拟,然后,每次找到编号最小的一个点的父亲输出就可以了。注意格式,输入输出就OK 了#include#include#include#include#include#define maxn 10000using namespace std;char s[maxn];vector g[51];int n;void init(){ for(int i=0;i

2013-06-22 18:06:41 624

原创 ZOJ_-1470--How Many Trees

题目大意:给出平衡二叉树的定义(即左右子树高度差不超过1,然后递归定义),题目输入树的节点数和叶子树,求符合条件的平衡二叉树的数量是多少?是个DP吧。dp[i][j][k]表示节点数为i,叶子树为j,高度为k的平衡二叉树的数量。题目给出的条件n<=20,m<20.树的高度上限为6.初始条件dp[0][0][0]=dp[1][1][1]=1;需要构造一颗高度为k 的平衡二叉树的,

2013-06-22 10:45:09 596

原创 POJ--2051--Argus

题目大意:有很多的询问,至于问什么就不用纠结了,需要的只是每个询问的 id和要求答案的间隔时间,也就是说,每个询问,我要每间隔per的时间就需要一个答案。题目输入每个询问的id和要求答案的间隔时间,要求输出前K个回答的先后顺序,如果同一时间回答了两个询问,则按id排序输出。题解:一个优先级队列即可#include#include#include#include#include

2013-06-21 10:54:45 566

原创 POJ--2236--Wireless Network

并查集的简单应用由于只有1001个点,所有可以预处理每个点到其他任一点的距离。然后对于修复操作来说。假设修复的点是x。则:依次检查每一个点i,如果点i已经修复了且距离小于等于d,则合并点i和点a的集合对于询问来说,直接查找就可以了#include#include#include#define maxn 1003using namespace std;double

2013-06-17 09:09:42 491

原创 POJ--3321--Apple Tree

树状数组的应用。深搜记录每个点在C数组中的第一次访问位置和离开位置,分别是l数组和r数组。则题目所求以点x为根的子树和就是c[r[x]]-c[l[x]-1]额,,然后关于树的存储问题,,vector被卡掉了,然后换了个左孩子右兄弟也被卡掉了,TLE换了个邻接表,过了。题目里有10 W个点,discuss里面一句话说得很对,会用stl的人知道什么时候可以用stl,什么时候不能

2013-06-17 00:54:59 517

原创 POJ--1988--Cube Stacking

复习一下并查集的统计问题#include#include#include#include#define maxn 30020using namespace std;struct PPPP{ int fa; int v;//表示该点的上方不包括该点有多少个方块}p[maxn];int top[maxn];//表示包括该点的下方一共有多少个方块int n;

2013-06-16 23:48:28 578

原创 POJ--1703--Find them, Catch them

并查集,一个只有两个集合。输入告诉你两个人不是同一个集合,然后问任意两个人是不是同一个集合的。假设有N个人,用p[A+N]表示第A个人对立集合。PS:从杭州回来好久没写题。以后比赛不想被虐,就在训练的时候自虐吧。#include#include#include#define maxn 100020using namespace std;int p[maxn*2];int n

2013-06-16 22:22:09 468

空空如也

空空如也

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

TA关注的人

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