![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
北大oj
文章平均质量分 68
小冷在努力
这个作者很懒,什么都没留下…
展开
-
poj 北大 oj 1840 Eqs
题意分析: 题意是很理解的,就是给你一个表达式,求出有多少组解就可以了。一般这样的题就是注意取值范围,表达式变形。变形可得:(a1*x1*x1*x1 + a2*x2*x2*x2)*(-1)=a3*x3*x3*x3 + a4*x4*x4*x4 + a5*x5*x5*x5; ,系数跟解的取值范围都是-50 到50 ,可以算出左边的取值范围是-1*2*50*50*50*50 到 2*50*50*50原创 2014-12-16 13:03:10 · 396 阅读 · 0 评论 -
poj 2418 Hardwood Species 二叉排序树
这道题看例子就能明白是什么意思。唯一坑人的地方就是要纠结如何判断输入结束的标志。看了一下别人的代码,无语了。这道题可以用两道题来写。一种是map,一种是创建排序二叉树。 map写法: #include #include #include #include #include using namespace std; map mapTree; int main() { double ans=0;原创 2015-04-07 00:00:27 · 318 阅读 · 0 评论 -
poj 2349 Arctic Network 最小生成树
这道题有个大坑,最后输出的时候如果用printf会WRONG,用cout会AC,我看了半天也没发现题意里面对这点作出说明,太坑了,这道题花费了我一个多小时,一直在找错,尼玛 这道题题意不好懂啊,看了别人的博客才明白在说什么: 题意:有两种不同的通信技术,有卫星通信的两个城市之间可以任意联络,但用无线电通信的城市只能和距离不超过D的城市联系。无线电的能力越高(即传输距离D越大),花费原创 2015-03-23 22:49:00 · 313 阅读 · 0 评论 -
poj 1838 Banana
题意分析: 其实这道题蛮容易理解的,就是在平面上给你N个点,水平和垂直方向为相邻,这些相邻的点可以看成一个区域。现在可以连同k个区域,求在这k个区域内,点的个数尽量多。如果你对并查集和熟悉的话,你会发现其实这道题蛮容易的。因为并查集讲的就是动态连通性。 代码如下: #include #include #include #include #include using namespace std原创 2014-12-15 00:26:46 · 358 阅读 · 0 评论 -
poj 3264 Balanced Lineup 线段树
这道题是线段树的入门提,但是这道题对递归的理解要求比较高。 代码如下: #include #include #include #include using namespace std; struct node { int lc,rc,mi,ma; }s[50010000]; int a[50010],mi=10000000,ma=-10; void build(int left,int r原创 2015-03-17 22:08:20 · 257 阅读 · 0 评论 -
poj 1988 Cube Stacking
不多说了,傻逼的一道题。。。#include const int M = 30005; int pa[M],cnt[M],dist[M]; void Init() { for (int i = 1;i <= M;i ++) pa[i] = i,cnt[i] = 1,dist[i] = 0; } int findset (int x) { if (x != pa原创 2015-03-15 23:56:15 · 320 阅读 · 0 评论 -
poj 2236 Wireless Network 并查集
蛋疼,无比的蛋疼。。。。。这道题竟然花了一天的时间来做,考啊。。。。最后看了别人写的代码,大致思路是一致的,唯一的不同的一个点就是合并的时候,我把第i个点的父亲节点直接赋值成了另外一个点的父亲节点。。。。 这道题的大致思路是:就是给你N个点的坐标,O表示那些点能用,S是哪两个点是连通的。把能用的点标记出来,当下个能用的点出现时,找到当下这个点与那些标记出来的点连通的点,找到各自的父亲节点root原创 2015-03-15 20:03:41 · 296 阅读 · 0 评论 -
poj 1828 Monkeys' Pride
题意分析: 看完这道题之后大家应该第一感觉就是这事一道水题。是的,我也是这样感觉的,我WA了好多遍,原因就是我对满足当‘王’的条件没搞清楚。#include #include #include using namespace std; struct px{ int x,y; }s[50010]; int cmp(struct px a,struct px b) { if(a.x<b.x) r原创 2014-12-14 09:39:05 · 427 阅读 · 0 评论 -
poj 1763 Shortcut
题意分析: 这道题我还能说什么,还能说什么,还能说什么。写完之后提交,WA,开始百度,我看了一下思路跟其中一位ACMer的一样,只是细节上不一样。就这样他过了。于是开始找错,找错,这尼玛找错找了一天,晚上还是没找到,等到第二天按着思路从新敲了一下,过了,我能说什么,我还能说什摸。 这道题理解起来我感觉有点难。在一个平面上给你几个点,让你把其中的两个点连接起来,使原来路径的长度变短,给这些点编号原创 2014-12-13 11:13:11 · 558 阅读 · 0 评论 -
北大oj 1723 SOLDIERS
题意分析: 这道题是说:有n士兵分布在一个二维的平面上,现要求让这些站成平行于x轴的一排,即(x,y),(x+1,y),(x+2,y)....问如何移动这些士兵,使他们的移动步数最小。设他们没移动一下为一。我们分析可得,沿y轴移动,他们都统一移动到中位数的位置,上下移动的步数石最小的。因为沿x轴的位置是相邻的,我们可以设这些士兵当前在x轴上的位置分别为:x1,x2,x3....然后映射到x1 -原创 2014-12-12 09:34:31 · 615 阅读 · 0 评论 -
北大oj 1694 An Old Stone Game
题意分析: 这道题是说:现在有一颗树,从其叶子节点处开始放石子,一个节点只能放一个。当这棵树的某个节点的孩子都被放上石子后,可以把孩子节点上的石子拿走,父亲节点上放一个石子。以此类推,直到根节点处放一个石子。现在给你一个篮子,让你装石子,问最少要装多少个石子才能做到这一点。因为这是一棵树,所以可以设第i个节点有孩子节点k个,每个孩子节点所需的最少石子数为num1,num2.....numk,对此原创 2014-12-11 19:52:02 · 983 阅读 · 0 评论 -
poj 1788 Building a New Depot
题意分析: 这道题是说在平面上给你几个点,然后你把这些点连接起来,求这个封闭的图形的周长。因为这些被给出的点是这个图形的顶点,且水平方向的相邻点两两连接,所以水平方向的点事偶数个,垂直方向的点也是这样。 代码如下: #include #include #include #include #include using namespace std; struct px{ int x,y; }s原创 2014-12-13 10:00:02 · 439 阅读 · 0 评论 -
北大oj 1423- Big Number
题意分析: 上段时间忙着做JAVA大作业,好久没刷题了。今天晚上从网上下载了一份Poj上的题意类型清单,做了一道这样的题,表示题意看了半天才看明白,看明白了就懵了,很显然给出的数据太大,遍历肯定超时,想了半天,最后还是忍不住百度了一下,如果让自己想的话,估计在过一个小时我肯定也不会。现在说一下自己新学道的知识点: Log(n!)= log1 + log2+log3+...+logn,原创 2014-12-09 01:05:30 · 330 阅读 · 0 评论 -
poj 北大oj 2201 Cartesian Tree
题意分析: 这道题考察的知识点就是数据结构的笛卡尔树,一下是我从网上找的有管笛卡尔树的一些介绍: 1. 笛卡尔树(key,value):在(解决范围搜索的集合)数据结构问题时提出的,从数列中构造一棵笛卡尔树可以线性时间完成。它具有堆的有序性,中序遍历可以输出原数列。 笛卡尔树的性质 1. 节点一一对应于数列元素 2. 中序遍历笛卡尔树即可得到原数列 3. 树结构原创 2014-12-17 10:28:30 · 428 阅读 · 0 评论 -
POJ 1067 取石子威佐夫博奕
http://blog.csdn.net/pi9nc/article/details/27713717 这里总共讲述了三个博弈,很经典看看你就明白是怎么回事了 代码如下: #include #include #include using namespace std; int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) { int原创 2015-04-17 10:57:18 · 378 阅读 · 0 评论