URAL
文章平均质量分 72
zxy_snow
这个作者很懒,什么都没留下…
展开
-
URAL 1073. Square Country
这题,给你N钱,求投资的最小块。N钱肯定会用完的,因为最小是1嘛。。。 开始就是往背包上想,多重背包转换为多重背包,然后仨循环,绝对超时的,然后BTW一提醒,我想起来完全背包的另一个版本了,类似01的只不过循环从1开始了,想了想,写了写,居然搞出来了T T。。 打表的时候,价值的表存的是钱x下用的最少的块数,类似一般背包中的v数组。w数组就是平方啦,然后就完全背包就好啦。原创 2011-05-01 18:33:00 · 1121 阅读 · 0 评论 -
URAL 1215. Exactness of Projectile Hit(水题,请绕行。。)
继续水水。发现URAL的题目描述总是让我感觉很纠结。。。其实就是求第一个点到凸包的最短距离的2倍。。。如果在凸包里面输出0。。。。这样描述好听多了。。#include #include #include #include #include #include原创 2011-09-13 21:54:43 · 906 阅读 · 0 评论 -
URAL Genie Bomber 2
很妙的题!!!开始以为好麻烦滴说,以为还要求圆面积并,再和正方形求交什么的,瞟了下讨论,有个说时间复杂度1000^2,思路瞬间明朗。。我好笨。。。精度限制不高,最裸的枚举都能过。。。把1*1的正方形划分成1000*1000个点,然后找在圆内的点数即可。精度太松了,10原创 2011-09-13 19:47:32 · 827 阅读 · 0 评论 -
ural 1019. Line Painting
http://acm.timus.ru/problem.aspx?space=1&num=1019呃,搜线段树题呢,瞟到URAL这个了。很水啊,还是染色问题,但是没好好看题,The segment of numerical axis from 0 to 10^9 is paint原创 2011-07-28 09:07:25 · 1874 阅读 · 0 评论 -
ural 1084. Goat in the Garden
水题啦。。给你一个正方形区域,中间有个柱子栓了一只山羊,给出方形的边长和山羊绳子的长度,求山羊不超过方形所能吃到草的面积。三种情况,绳子长 边长一半 && 绳子 用了两种方法求解。。。没测出来哪个精度高。。。都A了。。#include #include #include #include #include #include #include #include #include using namespace std;const double pi = acos(-1原创 2011-05-09 17:46:00 · 1255 阅读 · 0 评论 -
ural 1020. Rope
水题,计算周长+圆周长即可。给出的点是按顺序给的凸多边形,很水。。。开始没仔细看题,求凸包了,然后WA了,不应该啊,难道我凸包有问题。。。T T 。。加圆周长很简单哈,自己手动画一下,相邻两个圆的外公切线构成一个多边形,这个多边形的角所对圆心角之和正好是360度,而这些圆心角所对的圆周正好是需要加上的圆周,所以就一个圆周。#include #include #include #include #include #include #include #include #inclu原创 2011-05-09 17:42:00 · 1165 阅读 · 0 评论 -
ural 1008. Image Encoding
<br />这题越界了好多次 ,crash。。。神马的。<br /> <br />还是没读懂题啊 !!!我木有看INPUT OUTPUT的描述<br /> <br /> <br />Input<br />One representation of the image will be given to your program in the input.<br />Output<br />Your program has to write other representation of the image t原创 2011-05-10 23:09:00 · 1204 阅读 · 0 评论 -
ural 1033. Labyrinth
<br />和轻工校赛第一题基本一摸一样。。。昨晚和党btw翻题的时候发现的。。。我们表示。。。无语。。。<br /> <br />从左上角和右下角搜下,如果搜超界还有碰到#,sum++即可~最后sum-4去掉两个点的门,最后*9(题目要求的,恩。。)<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>原创 2011-05-10 17:23:00 · 1128 阅读 · 0 评论 -
ural 1022. Genealogical Tree
裸的拓扑排序。昨晚btw一写,我才觉得,我以前写的拓排,真慢啊真慢。。他直接用DFS盖时间戳了 。。。T T。。。这个是btw的代码。。。#include #include #include #define N 100static int g[N + 1][N + 1];static int n;static int toporder[N + 1];static int count;static char used[N + 1];static void topsort(v原创 2011-05-10 10:27:00 · 870 阅读 · 0 评论 -
URAL 1640. Circle of Winter
这题目太可爱了。我喜欢。。不过还是有点坑。。看了样例,以为是最小圆覆盖,直接套模板了,悲剧WA掉,discuss也没啥帮助信息。。。重新读题,发现输出坑姐了。有demon的地方不能是圆的中心,求的不是最小圆,能把所有点都覆盖掉而且至少有一个点在圆周上即可,这个这个。。。我原创 2011-09-13 15:19:20 · 885 阅读 · 1 评论 -
URAL 1192. Ball in a Dream
水题一枚~~之前一直没怎么看懂题,事实证明。。。我想歪了。。。开始一直没明白过来pi干吗用 = =。。直到样例过不去才发现了,输入是角度。。计算用的是弧度。。笨。。给你速度和初始角度,每次落地减少为原来1/K的动能,求能跳到的最大距离。。纯物理题。。#in原创 2011-09-13 17:56:30 · 850 阅读 · 1 评论 -
URAL 1572. Yekaterinozavodsk Great Well(继续贴水题~)
这个题也是好早以前就看了,一直没怎么看懂。其实好水滴说。给你一个大井,还有N个井盖,问你能放进这个大井里的井盖的数目。井和井盖的形状有三种,圆,正方形,正三角形。井盖可以旋转,比如三角形放到正方形里,可以画出三角形的高一定是最短的那条边,正方形的对角线是最长的边,原创 2011-09-13 20:55:17 · 934 阅读 · 0 评论 -
URAL 1220. Stacks
我那个神>看起来是水题。。卡内存啊啊啊啊啊啊!!!!我用了无数的方法!!!神马multimap,神马模拟链表,神马vector,神马stack数组!!!总共提交了22次。。。囧啊。。STL熟了不少!!!结果还是MLE!!看discuss提示用俩数组,用了,类似链表原创 2011-09-29 22:41:34 · 1617 阅读 · 0 评论 -
URAL 1159. Fence
给你N条线段的长度求能构成面积最大多边形的面积。可以YY出,这N个点共圆,肯定是凸包。。。(自己证= =。。)二分半径即可。有一种情况是,所有共圆的时候,边都在一条直径的一侧,这样的话得特殊考虑。判断是否是这种类型的话,可以假设最长边的一半为半径,然后求得除最长边原创 2011-09-29 16:39:28 · 929 阅读 · 0 评论 -
UVA 11817 Tunnelling the Earth
经度维度计算球面距离以及直线距离。模板模板。。#include #include #include #include #include #include #include #include #include #include #include #in原创 2011-08-20 14:37:14 · 1136 阅读 · 0 评论 -
URAL 1588. Jamaica
简单题,开始还以为是最小生成树呢。。任意两点之间都有一条线段相连,如果三个点在一条线段上,那么不需要重复连接,最长那个即可。求最小的长度。也就是去掉重复的就行了。最好想的就是O(n^3)算法了,直接枚举,然后找共线上最远的两个点,标记,求距离。下次找,如果在这条线段上的点原创 2011-09-16 13:01:58 · 816 阅读 · 0 评论 -
URAL 1489. Points on a Parallelepiped
已知一个展开的盒子,和上面的两个点,求这个盒子拼好后,这两个点的距离。二维的转三维,然后计算距离即可。细节很繁呐。。我的get_id函数是分块儿的,然后in_it 是判断在哪个块儿,然后change是坐标转换。#include #include #includ原创 2011-09-15 21:25:34 · 805 阅读 · 0 评论 -
URAL 1075. Thread in a Space
又被题给虐了。三维的,不过可以转化为二维来看。两个点之间有一个球(两点在球外),两个点之间扯一条线,问线的最短距离。两种情况1、AB不会碰着球,直接求AB之间距离即可2、会碰着球。第二种情况比较纠结,有同学用物理方法说明,那一段弧一定过球的大圆。。。过大圆的话原创 2011-09-15 14:33:17 · 1399 阅读 · 1 评论 -
URAL 1111. Squares
我当水题刷的,结果被屠了。极度无语。。。就是问你这个点到所有正方形的最小距离,然后按距离排序,排完输出ID即可。水题是吧?做了好久啊啊啊!!输入的是对角线两点坐标,我自作聪明地认为边平行坐标轴了啊!!其实木有啊!!!以前都遇到过类似的输入,需要找到另外俩点啊!!!原创 2011-09-14 21:54:30 · 778 阅读 · 0 评论 -
URAL 1294. Mars Satellites
好久没犯这么 2 的错误了,输出"Impossible."我输出的是“Impossible”。。。。。。。。。。。。。。。。。双击单词复制的后果= = 。。笨蛋 xy 。。。给的圆内俩共底三角形的四条边,求另一条边。根据高中数学知识,共弦的圆心角相等,所以用余弦定理即可。原创 2011-09-14 10:41:26 · 972 阅读 · 0 评论 -
URAL 1012. K-based Numbers. Version 2
和1009一样,只不过需要用大数~~!!#include #include #include #include #include #include #include #include using namespace std;const int MAX = 1010;int dp[20][200][MAX];int len[20][200];int main(){ int n,k; memset(dp,0,sizeof(dp)); for原创 2011-05-01 11:16:00 · 1862 阅读 · 1 评论 -
ural 1210. Kind Spirits
<br />给出图,每一层有好几个点,求从0层到最高层的最短路。<br /> <br />开始没多想,直接拿最短路写的,建图稍显麻烦,不过还好啦。1A了。后来想起来党姐说DP可以做,想了想,这不就类似数字三角形嘛,用DP也过了,DP真短。<br /> <br />最短路SPFA<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include原创 2011-05-15 23:36:00 · 1374 阅读 · 2 评论 -
ural 1056. Computer Net
<br />这题,纠结好久了。题意是,给你一颗树,求到达其他端点最远距离最近的点。<br /> <br />昨晚想出来一种方法,但是实现很有问题。就是删度为1的点,一直删到剩下的点度都为1为止。但是这个实现起来很麻烦啊。。。T T 。。<br /> <br />党姐今天说了他的想法,就是找最长链,然后求得的点要么是一个要么是两个,所以肯定是最长链中间的那一个或者两个。找最长链是,随意从一个点出发,找到离它最远的一个点,然后再由这个点找最长链。<br /> <br />刚实现了下,觉得没啥问题,在第九组cra原创 2011-05-15 15:21:00 · 1004 阅读 · 0 评论 -
ural 1010. Discrete Function
<br />一个离散的函数,求两点连线的上方没有点而且斜率最大。<br /> <br />开始纠结了好久,后来btw想出来了,他说,如果两点连线的下方有点,那么上面那个点一定可以和下方的某点连起来满足题意。<br /> <br />所以说,这种只能存在在相邻两点之间,也就是x相邻,求|yi - yj| i j相邻差值最大即可。很神奇吧~<br /> <br />#include <stdio.h>#include <stdlib.h>#include <math.h>#define MAX 10原创 2011-05-13 13:01:00 · 1397 阅读 · 0 评论 -
ural 1136. Parliament
<br />相当于,给你二叉树的后序遍历和中序遍历,求先遍历右子树,再遍历左子树,再遍历根。<br /> <br />其实上面这个遍历就是前序遍历的逆。直接求前序遍历,然后从后往前输出即可。<br /> <br />这个遍历我想了好久,需要用递归,但是开始不知道往哪个方向上想。后来搜了下,瞟了一眼。今早在实验室想了一个多小时,终于想出来了。<br /> <br />从后序遍历中找到根,然后在中序遍历的相应位置找到分成的两棵子树,然后再进行遍历。<br /> <br />递归真的很神奇~!<br /> <br原创 2011-05-13 13:09:00 · 1020 阅读 · 0 评论 -
ural 1080. Map Coloring
<br />图的染色问题,类似二分图的染色问题。其实这题就是问你能不能类似二分图一样把图染成两个颜色,而且相邻顶点颜色不一样。<br /> <br />直接DFS。。。没啥好说的。如果遇到不合适的,输出-1.<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;const int MAX = 110;int n;bool map[MAX][MAX];int原创 2011-05-12 23:47:00 · 1532 阅读 · 0 评论 -
ural 1106. Two Teams
<br />给你朋友关系,要求分成两个队,使得任意一个人在一个队,他在另一个队都有朋友。<br /> <br />直接DFS,不过这么DFS有点莫名其妙哈。。。<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <string.h>#inc原创 2011-05-12 23:45:00 · 1041 阅读 · 0 评论 -
ural 1207. Median on the Plane
<br />一堆点(偶数个),任意三点不共线,挑两个点使之连成的线把所有点分成相等两部分 ,求这两个点。<br /> <br />想了好久不知道做法,忍不住搜题解了,只是个极角排序就完了,无语。<br /> <br />我想了想,选了最左下方的角,然后极角排序,然后这两个点就是左下角的点,和极角排序后中间的那个点。<br /> <br />因为任意三点不共线,所以这两点一定能把整个分成相等的两部分。后来想了下,其实任意找一个点,只要其它点都在它的一个张角小于180度的方向上,那么按极角排序,取它和中间的那个原创 2011-05-12 12:31:00 · 1303 阅读 · 0 评论 -
ural 1005. Stone Pile
<br />给你一堆石头的重量,问你如何分成两堆,使得他们质量之差最小,求出这个最小值。<br /> <br />开始模拟呢。。。居然过了T T。。跟党说的时候,他觉得我这个策略有问题,后去看discuss,大家都说数据太弱了。。。<br /> <br />我自己想了组数据,我的模拟过不了了。。。好吧。我还是用DP吧。<br /> <br />01背包。然后从0开始找差值最小的那个包~<br /> <br />时间复杂度 O(sum*n)<br /> <br />#include <queue>#inc原创 2011-05-11 16:27:00 · 2386 阅读 · 3 评论 -
ural 1280. Topological Sorting
<br />给你一个图,和它的拓扑排序,问这个拓排序列是否满足给的图。<br /> <br />直接找入度为0的点,删掉,然后和给的序列比较,如果题目给的点正好都是删掉前一个点后入度为0的点,那么就满足题意,否则就不是。<br /> <br />图有重边,WA了一次<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <math.h>using原创 2011-05-17 22:19:00 · 1255 阅读 · 0 评论 -
ural 1049. Brave Balloonists
<br />给你十个数,求这个十个数的乘积有多少个因子N,求N的个位数是多少。<br /> <br />直接求每个数的质因子,然后比如2的个数有5个,3有2个,那么N = (5+1)*(2+1)。详见白皮书P184,还是党姐说的Orz个~<br /> <br />为防止溢出,乘下在%10即可~<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>原创 2011-05-18 18:19:00 · 1303 阅读 · 0 评论 -
ural 1104. Don’t Ask Woman about Her Age
<br />给你一个未知进制表示的数(小于等于36进制,长度最长100W),求一个进制,使得这个进制的这个数可以整除进制-1.<br /> <br />比如样例,22进制的A1A可以整除21.<br /> <br />我没多想,直接拿大数做了。。。只需要判断是否能整除,所以还是好写的,不过以前只写过除2的,其实都一样~~~<br /> <br />后来btw说他的方法了,因为这个数等于 b*x+a,所以它模(b-1)就是(x+a)%b。。。自己想下就好了。。。T T。。<br /> <br />不过写出来大原创 2011-05-18 23:08:00 · 1694 阅读 · 2 评论 -
URAL 1009. K-based Numbers
开始跟着BTW做DP题。。计算几何我还会一直学的,DP也同步学吧。BTW推荐的URAL这个。。。分类里有几十道DP。。。任重而道远~!这个水题哈,想了会儿,拿K=2模拟了下,发现基本和斐波那契数列差不多。在n,k下,第二位为1的情况等于在n-2,k的情况 + n-1,k的情况,再乘以首位不为0的情况(k-1)。。。开始一直拿2模拟的,忘记乘以首位不为0的了,N,K输入次序搞反了,WA得一塌糊涂T T 。。。int盛不下,long long可以。#include #include #include原创 2011-05-01 10:40:00 · 1857 阅读 · 0 评论 -
ural 1247. Check a Sequence
Ai + Ai+1 + … + Aj ≤ (j – i + 1) + N 等价于 Ai-1 + Ai+1-1 + … + Aj -1≤ N直接求最大子段和与N比较即可。#include #include #include #include #include #include #include #include #include #includ原创 2011-06-04 13:38:00 · 672 阅读 · 0 评论 -
ural 1225. Flags
纠结啊。。。。贴道水题。 我推的公式,用排列组合,过后看下discuss,居然是斐波那契数列的二倍。。情何以堪!!! #include #include #include #include #include #include #include #include #include #include using namespace std;c原创 2011-06-03 23:16:00 · 1038 阅读 · 0 评论 -
ural 1085. Meeting
<br />这题,初看没什么思路,下午看的时候挺困的,去床上躺了会儿,想通了,水题呀~~<br /> <br />给你几条路线,从一条路线到另一条路线需要重新买票,给出K个人的位置,每个人都需要到达同一个点去,每个人有钱,有的还有月票(月票的话乘车不要钱~)问你到哪个点,总的花费最小,输出位置和最小花费。如果不能到达,输出0。<br /> <br />建图,每条路上任意两点的权为1,然后用floyd找从一个点到另一个点的最短路。然后枚举到达地点即可。<br /> <br />处理月票和是否连通需要注意下。<原创 2011-05-17 22:24:00 · 1057 阅读 · 0 评论 -
ural 1069. Prufer Code
<br />题感觉开始有点看不懂,后来看懂后感觉还是蛮水的。<br /> <br />这是一棵树,每次删掉度为1而且编号最小的值,然后输出删掉这个叶子所连的父节点。就这么一直删下去。<br /> <br />然后把这个输出给你,让你重建这棵树。<br /> <br />输入的话,肯定是原树中不是叶子节点的点,而且度为多少,就输入多少次。比如样例:2 1 6 2 6 。可以推得,原树中6的度为2,2的度为2,1的度为1。然后没出现的肯定是叶子节点,然后从这些点中找编号最小的,比如样例,肯定是3,那么3连的一定原创 2011-05-16 19:51:00 · 1335 阅读 · 0 评论 -
ural 1072. Routing
<br />水题啊,不过因为那个AND还百度了下,神马叫IP和子网掩码的按位与 = =。。其实就是IP和子网掩码的每个数字上用&与下,得到最终结果即可。<br /> <br />因为是按位与后结果相同的可以连线建图,我直接把按位与的结果存成一个数字了,得用long long,要不存不下。<br /> <br />然后直接和之前已经存过的结果对比,如果相等就建图。<br /> <br />然后就随意了,用dijkstra求最短路,输出路径即可。<br /> <br />#include <stdio.h>原创 2011-05-16 23:07:00 · 1871 阅读 · 0 评论 -
ural 1119. Metro
<br />这题和第一次群赛的那个题基本是一摸一样哈,当时党姐做出来了,无限仰慕啊。。。今天上午好不容易把1004过了,就看到这题了,在图论下的分类T T。。<br /> <br />尝试用DP做了。状态是,从1,1到每层点的最短路。直接求左边和下边的点对它更新,如果左边的点可以穿的话,直接用左下角的点和下方的点和左边的点更新,求最小值。<br /> <br />限制内存了,因为每一层只和上一层有关系,所以只存两层就可以了。<br /> <br /> <br />#include <queue>#inc原创 2011-05-16 16:53:00 · 1435 阅读 · 0 评论 -
ural 1208. Legendary Teams Contest
<br />给你几队,每队三个队员,但是可能有重复。一个队员只能属于一个队,问你最多几个队不冲突。<br /> <br />如果每队两个队员,那就是二分图最大匹配啦~~<br /> <br />这样的话,直接搜就好了。直接搜每个队成立的话然后取哪几个队。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <math.h>using names原创 2011-05-17 22:16:00 · 1299 阅读 · 0 评论