ACM
振丿Love
这个作者很懒,什么都没留下…
展开
-
UVA-112 Tree Summing
2016.11.2UVA - 112 Tree Summing题目大意:给一个数和一棵树问是否有一叶子到根的值为该数。解题思路:递归,若当前节点无孩子(叶子)则判断和是否为所需数字。结束后需将尾部反括号读入以免影响下一个样例。#include#include#include#include#include#includeusing原创 2016-11-14 18:30:00 · 278 阅读 · 0 评论 -
UVA-133 The Dole Queue
2016-08-18UVA - 133 The Dole Queue题目大意:N 个人围成环逆时针编号,逆时针从 1 开始数第 k 个出列,顺时针从 N 开始数第 m 个人出列,若数到同一个人,出列一次。下一轮从当前位置开始数,直至所有人出列。输出编号,宽度 3。解题思路:编号,循环查找,下标到 0 时改为 N,为 N+1 时改为 1,使数组头尾连接。出列后编号改为原创 2016-08-18 19:30:37 · 229 阅读 · 0 评论 -
UVA - 11234 Expressions
2016-08-18UVA - 11234 Expressions题目大意:一个表达式,可以用栈来处理,同时可以用队列来处理。现在告诉你用栈处理的表达式顺序,求其用队列表示的顺序。几种操作数为小写字母,操作符为大写字母。解题思路:采用栈来模拟,则为树的后序遍历,而用队列表示的是其层次遍历的逆序输出。所以根据后序遍历建树,再层次遍历该树,逆序输出。即遇到小写字母就建立原创 2016-08-18 19:31:32 · 279 阅读 · 0 评论 -
UVA-10050 Hartals
2016-08-19UVA - 10050 Hartals题目大意:给 T 个样例,连续 N 天,从周日开始,P 个队伍,每个队伍罢工的日子是所给队伍数字的倍数,多个队伍在同一天罢工只算一次,且周五周六不算,问罢工天数。解题思路:模拟,循环,把罢工的日子算出来,到了那一天就 sum++ 。一旦有一组罢工过这天就结束,每周五周六跳过。#include #incl原创 2016-08-19 23:42:08 · 304 阅读 · 0 评论 -
UVA-11111 Generalized Matrioshkas
2016-08-19UVA - 11111 Generalized Matrioshkas题意:大玩具里面可以塞小玩具,但是小玩具的体积和要小于 ( 没有等于!! ) 大玩具的体积。-n+n表示一个玩具,-7 -3 +3 +7表示一个体积为7的玩具里面塞来一个体积为3的玩具。判断给出的串合不合法。解题思路:定义一个能储存尺寸和能容纳大小的结构体,创建这种类型的栈原创 2016-08-19 23:40:57 · 420 阅读 · 0 评论 -
UVA-10152 ShellSort
2016-08-19UVA - 10152 ShellSort题目大意:输入 n 串字符和目标顺序,每次可以选择一串字符置于最顶端,目的是将输入的字符串变为目标顺序,输出每次选择置于顶端的字符串。解题思路:对比当前状态和目标状态,设置两个指针同时从底部向上扫,相同时同时向上 +1,否则当前状态 +1,当前状态扫完后将目标状态未扫到的倒序输出,即需要选择的字符串。原创 2016-08-19 23:43:42 · 339 阅读 · 0 评论 -
UVA-10916 Factstone Benchmark
2016-08-08UVA - 10916 Factstone Benchmark题目大意:从 1960 年开始,每十年位数翻一倍,最开始是 4bit,求最大的 n 使得 n!小于当前电脑位数所能表示的最大无符号整数。如 1960 年 4bit,所能表示的最大整数为 2^4=16。1!=1,2!=2,3!=6,4!=24。当 n=4,n! 大于 15,所以 n=3。原创 2016-08-08 20:27:14 · 222 阅读 · 0 评论 -
UVA-573 The Snail
2016-08-08UVA - 573 The Snail题目大意:给出 H 井高,U 上爬距离,D 下滑距离,F 减少百分数。第一天爬 U,第二天比前一天减少 F%,每晚下滑 D,问成功(总爬行距离大于 H)或失败(距离小于 0)在第几天。解题思路:模拟每天上爬和下滑,记录天数,每次距离变化后就判断,及时退出。注意:第一天的模拟也要放在模拟过程循环内。原创 2016-08-08 20:28:16 · 207 阅读 · 0 评论 -
UVA-10790 How Many Points of Intersection?
2016-08-08UVA - 10790 How Many Points of Intersection?题目大意:两条平行线上分别有 a 和 b 个点,每个点与另外一条线上的点都要相连,求交点个数,两线相交就算一个点,不存在三线交于一点的情况。解题思路:固定第一条线上的 a 个点不动,b 每加 1,加的点的个数是 (1+2+3+…+a-1) × b,b 从一个开原创 2016-08-08 20:29:16 · 241 阅读 · 0 评论 -
UVA-101 The Blocks Problem
2016-08-18UVA - 101 The Blocks Problem题目大意:操作积木。有 0~n-1 个积木,初始状态是并排横放。有四种操作:move a onto b,将 a、b 上的方块放回原位然后将 a 放在 b 上;move a over b,将 a 上的方块放回原味然后将 a 放在 b 所在位置的最顶上;pile a onto b,将 b 上的方块放回原原创 2016-08-18 19:29:26 · 280 阅读 · 0 评论 -
UVA-839 Not so Mobile
2016-08-17UVA - 839 Not so Mobile题目大意:树状天平。每一行输入 w1,d1,w2,d2,若 w1×d1 == w2×d2,则平衡。当 w 为 0,说明有一个子天平,w1,w2 同时为 0,下一行给出 w1 的子天平信息。解题思路:递归输入,同时判断,不平衡时返回 0。注意:只要有一边的返回值为 0,总的就不平衡。第一原创 2016-08-17 20:48:59 · 264 阅读 · 0 评论 -
UVA-621 Secret Research
2016-07-21UVA - 621 Secret Research题目大意:根据题目输出对应字符,S 代表任意串。解题思路:根据规则特征判断输出。#include #include #include using namespace std;char str[1000];int main() { int n; scanf("%d",&n)原创 2016-07-20 21:20:11 · 282 阅读 · 0 评论 -
UVA-10025 The ? 1 ? 2 ? ... ? n = k problem
2016-07-21UVA - 10025 The ? 1 ? 2 ? ... ? n = k problem题目大意:输入 k,使得? 1 ? 2 ? ... ? n = k,其中 ? 为+ 或 -,求 n。1+2+3+4,先求sum,当sum大于目标数k时,判断sum - k的结果是不是偶数,因为只有是偶数的时候,才能有?1?2?3……得到。因为开始的时候都是加原创 2016-07-20 21:21:28 · 377 阅读 · 0 评论 -
UVA-10161 Ant on a Chessboard
2016-07-21UVA - 10161 Ant on a Chessboard题目大意:给一个棋盘,输入n,找出n在第几行第几列。解题思路:通过while (k*k < n) k++;来获取n在哪一个L形外圈上。通过 (k,k)点的值( (k-1)^2 + k) 可以知道n处于L形外圈的那一部分( k奇数和偶数时两个是倒过来的)。然后计算出坐标。原创 2016-07-20 21:28:24 · 196 阅读 · 0 评论 -
UVA - 591 Box of Bricks
2016-07-22UVA - 591 Box of Bricks题目大意:移动方块使所有列一样高,一次一个,求移动次数。解题思路:求平均数然后计算每列大于平均数的个数。#include #include using namespace std;int main() { int N = 0; int n; while ( scanf("%d",&n原创 2016-07-21 20:19:12 · 259 阅读 · 0 评论 -
UVA - 10499 The Land of Justice
2016-07-22UVA - 10499 The Land of Justice题目大意:求切了 n 刀后增加的表面积是原来的百分之多少。解题思路:第一刀无法切开,第二刀多了四个半圆面,之后每刀多两个半圆面。原始面积:4 × PI × r × r一个半圆面:PI × r × r / 2每刀增加两个半圆面即 1 / 4 化为百分数即 *25,精度问题直接原创 2016-07-21 20:20:50 · 222 阅读 · 0 评论 -
UVA - 11044 Searching for Nessy
2016-07-22UVA - 11044 Searching for Nessy题目大意:问 n×m 的地图最多放多少个 3×3 的矩形。#include #include using namespace std;int main() { int n; scanf("%d",&n); while ( n-- ) { int n, m; sca原创 2016-07-21 20:34:49 · 185 阅读 · 0 评论 -
UVA-442 Matrix Chain Multiplication
2016-08-17UVA - 442 Matrix Chain Multiplication题目大意:给出 n 个 矩阵名,行,列,然后给一些式子,求每个式子需要经过多少次计算(乘和加),括号内先算。解题思路:首先要对矩阵乘法有一些了解。A(xy)、B(xy)两个矩阵能否进行乘法运算的充要条件是是否满足 A.y == B.x,如果满足,则会得到矩阵C(A.xB原创 2016-08-17 20:46:16 · 235 阅读 · 0 评论 -
UVA-673 Parentheses Balance
2016-08-17UVA - 673 Parentheses Balance题目大意:匹配括号。空行也输出 Yes。解题思路:左括号入栈,右括号出栈,最终栈空,输出 Yes。注意:不能用计数偷懒,([(]))这种情况无法解决的。([(])) ——> No#include #include #include using namespac原创 2016-08-17 20:47:51 · 335 阅读 · 0 评论 -
UVA-253 Cube painting
2016-08-08UVA - 253 Cube painting题目大意:给两个正方体涂色,问经过旋转是否能变为一模一样。解题思路:检测两个正方体的三对面颜色是否对应相等,相等令其为 0,有三对之后输出 TRUE。#include #include #include using namespace std;int main() { char str原创 2016-08-08 20:30:31 · 247 阅读 · 0 评论 -
UVA-10387 Billiard
2016.09.12UVA - 10387 Billiard题目大意:球在桌中心与水平线成一个角度发射,最后返回出发点,给出水平边长度、竖直边长度、飞行时间、竖直边被碰撞次数、水平边被碰撞次数,求发射角度和速度。解题思路:因为会回到中心,每碰撞一次竖直边,表示最终会在水平上移动完整的水平边长度。竖直同理。知道它总的水平和竖直移动长度,就可以求出实际的路线长度。水原创 2016-09-12 15:49:36 · 352 阅读 · 0 评论 -
UVA-10250 The Other Two Trees
2016-08-12UVA - 10250 The Other Two Trees题目大意:给出两棵树的位置找到另外两棵,四点构成正方形。解题思路:求出中点,把所给的两棵树的坐标绕中点旋转 90 度得到的坐标就是另外两棵。(x, y) 绕 (0, 0) 顺时针转90度后坐标为 (y, -x);(x, y) 绕 (p, q) 顺时针转90度;先把 (p,原创 2016-08-12 22:51:43 · 264 阅读 · 0 评论 -
UVA-408 Uniform Generator
2016-08-12UVA - 408 Uniform Generator题目大意:给出 step 和 mod,根据 seed(x+1)=[seed(x)+step]%10mod,问产生的随机数是否均匀分布于 0 到 mod-1。解题思路:判断2个数是不是互质,用辗转相除法就好了。#include #include using namespace std原创 2016-08-12 22:53:20 · 224 阅读 · 0 评论 -
UVA-10879 Code Refactoring
2016-08-12UVA - 10879 Code Refactoring题目大意:找出一个数的任意两对因子。不一定要与样例相同。解题思路:枚举能整除的输出两对,注意格式。#include #include using namespace std;int main() { int n, num; scanf("%d",&n); for (int原创 2016-08-12 22:54:23 · 438 阅读 · 0 评论 -
UVA-375 Inscribed Circles and Isosceles Triangles
2016-08-13UVA - 375 Inscribed Circles and Isosceles Triangles题目大意:等腰三角形给出底边和高,首先求内切圆 r1 ,再求切两腰和 r1 的圆 r2 ,同理求 r3 ……知道圆的半径小于0.000001。求这些圆的周长和。解题思路:我们可以求出腰长 tmp = srqt( y * y + x * x / 4原创 2016-08-13 18:16:10 · 300 阅读 · 0 评论 -
UVA-579 Clock Hands
2016-08-13UVA - 579 Clock Hands题目大意:以H:M的形式给出时间,求此时时针和分针之间的夹角是多少。解题思路:时针每一大格是 30度,分针是 6度。而分针每走一个又会让时针往前走 0.5度。分别计算出度数相减。让结果在0-180之间就好了。#include #include using namespace std;int m原创 2016-08-13 18:15:00 · 228 阅读 · 0 评论 -
UVA-10392 Factoring Large Numbers
2016-08-13UVA - 10392 Factoring Large Numbers题目大意:求n的所有因数。解题思路:可以直接暴力不断从2开始跑,遇到能整除的就整除,然后再从2开始跑。注意:如果循环中直接让 i 从 2 循环到 n 的话,会 TLE 。所以必须得优化算法,这里选择让 i 从 2 循环到 sqrt(n) 处,可以大大节省时间。#in原创 2016-08-13 18:18:06 · 239 阅读 · 0 评论 -
最长回文子串
2016.10.12最长回文子串题目:回文串是指这个字符串无论从左读还是从右读,所读的顺序是一样的;简而言之,回文串是左右对称的。现在,对于一个给定的母串“abcdedcb”。可以找出子串a, ded, cdedc, bcdecdb等均是回文串;显然,bcdecdb是其中最长的那一个。但是该如何找出最长的回文子串呢?解题思路:最简单的想法就是用穷举,直接穷举出所有的可能,简原创 2016-10-12 20:26:29 · 320 阅读 · 0 评论 -
UVA - 327 Evaluating Simple C Expressions
2016.11.10UVA - 327 Evaluating Simple C Expressions题目大意:根据 ++、-- 的性质计算,a = 1,b = 2……z = 26。输出计算结果和计算后各字母的值。解题思路:暴力模拟。每碰到一个字母,检查该字母前后是否存在前缀,若存在,将改字母对应的值 +1 或 -1,找到字母前的一个符号 + 或 -,进行对应计算,原创 2016-11-14 18:24:39 · 290 阅读 · 0 评论 -
UVA-350 Pseudo-Random Numbers
2016-08-11UVA - 350 Pseudo-Random Numbers题目大意:给出 Z,I,M,L,根据 L=(Z*L+I)modM 计算每一轮 L,输出循环的 L 的个数。解题思路:用一个数组记录 L 是否出现过,未出现循环长度 +1 并标记出现,直至重复出现时跳出,输出长度。注意:循环不一定从所给的 L 开始。种子有可能是1,2,3,4,3原创 2016-08-11 22:40:32 · 254 阅读 · 0 评论 -
大数阶层
在做ACM时会碰上一些阶层的问题,然而这些阶层有时又会很大,此时,我们便可以使用大数阶层的算法来轻松解决此类问题。例子见UVA-568#include #include #include using namespace std;int num[3000];//最后的结果是以“个十百千万”的顺序分别储存在数组中的。int main() { int n; while ( ~s原创 2016-08-11 14:04:57 · 397 阅读 · 0 评论 -
UVA-712 S-Tree
2016-08-22UVA - 712 S-Tree题目大意:满二叉树,节点值为 0 或 1。给出一个 n 表示该二叉树的深度,第二行 x3,x1,x2 表示从根节点开始每一层的值(没什么用),第三行表示最后一层即叶子的值。接着给出要查找的次数 m,以下 m 行每行分别表示 小球的走法。有一颗小球从根节点出发,遇到 0 左走,遇到 1 右走,输出最后到达的叶子节点的值。原创 2016-08-22 20:20:36 · 390 阅读 · 0 评论 -
UVA-297 Quadtrees
2016-08-22UVA - 297 Quadtrees题目大意:四叉树,给 32 × 32 的格子涂色,p 表示将当前格子分为四个象限,根据 1、2、3、4 象限的顺序处理,e 不上色,f 将当前格子涂黑,问两个图重叠后涂黑的格子数是多少。解题思路:递归,二维数组模拟格子涂色,两轮后计算黑色格子数。#include #include #include原创 2016-08-22 20:22:30 · 309 阅读 · 0 评论 -
UVA-540 Team Queue
2016-08-22UVA - 540 Team Queue题目大意:t 个队伍排队,若队伍中已经有自己队伍的人,则排到这个队伍的最后面,若没有,排到整个队列的后面。解题思路:模拟,映射把每个人和队伍号对应起来,定义两个队列,一个存放排队的团队的编号,另一个记录某个队伍已排人的编号。注意:要用STL,不然容易TLE。#include #include原创 2016-08-22 20:23:56 · 330 阅读 · 0 评论 -
UVA-10719 Quotient Polynomial
2016-08-10UVA - 10719 Quotient Polynomial题目大意:多项式 p(x)=(x-k)q(x)+r,给出 k 和 p(x)求 q(x) 和 r。解题思路:待定系数,推得 b[i] = a[i] - k * b[i-1],其中a 为 p 的系数,b 为 q 的系数。k 是 (x-k) 的 k,不是 k 次方,样例害死人!!!#原创 2016-08-10 20:29:41 · 269 阅读 · 0 评论 -
UVA - 575 Skew Binary
2016-08-10UVA - 575 Skew Binary题目大意:根据题目给出的特殊进制转化。解题思路:第 K 位上的数乘以(2 ^ k - 1),所有相加。注意:数字太大,需要以字符串形式进行输入。#include #include #include #include using namespace std;char str[1000原创 2016-08-10 20:30:41 · 238 阅读 · 0 评论 -
UVA - 10110 Light, more light
2016-08-10UVA - 10110 Light, more light题目大意:给 n 盏灯,走 n 趟,第 i 趟只能改变能够整除 i 的灯的状态,问 n 趟后第 n 盏灯是否是亮的。解题思路:只要考虑第 n 盏灯的改变就行,被改变的次数就是它的因子的个数,因为一开始灯是关闭的,所以一共要改变奇数次才能最终亮起来,即题意为:求一个数的因子是否是奇数个。因子原创 2016-08-10 20:31:37 · 260 阅读 · 0 评论 -
UVA-550 Multiplying by Rotation
2016-08-11UVA - 550 Multiplying by Rotation题目大意:题意是给出一个进制,一个数字的最低位,和另外的一个数字,比如10进制,第一个数字的最低位是7,第二个数字是4,根据这些信息,和规则(XXXXX7 * 4 = 7XXXXX,例子: 179487 * 4 = 717948 )求出第一个数字的最小长度。这个规则的意思是乘积是把第一原创 2016-08-11 14:06:47 · 320 阅读 · 0 评论 -
UVA-568 Just the Facts
2016-08-11UVA - 568 Just the Facts题目大意:求阶乘的最后一位非零数字。解题思路:此题可以直接用大数的阶层来得出。注意:大数阶层得出的顺序是个十百千万。具体算法见博客,“大数阶层”。#include #include #include using namespace std;int num[3000];i原创 2016-08-11 14:09:03 · 219 阅读 · 0 评论 -
UVA-113 Power of Cryptography
2016-07-20UVA-113 Power of Cryptography题目大意:k^n=p,给出 n 和 p 求 k解题思路:k = p ^ (1/n)注意:这题用double即可,原因如下。此题可用double的原因#include #include #include using namespace std;int main()原创 2016-07-20 21:11:53 · 332 阅读 · 0 评论