UVA题解一

UVA 100

题目描述:经典3n+1问题在\(n \leq 10^6\)已经证明是可行的,现在记\(f[n]\)为从\(n\)开始需要多少步才能到\(1\),给出\(L, R\),问\(f[L], f[L+1], f[L+2], ... , f[R]\)中的最大值。

solution
这题主要是坑。。。
1、\(L\)有可能大于\(R\) 2、数据范围应该是\(10^6\)
言归正传。通过打表发现,\(10^6\)以内的\(f[n]\)最大也只是几百,普遍都很小,所以不用记忆化也可以把\(f[n]\)全部算出来,然后可以用rmq维护区间最大值,那么询问的代价可以缩为\(O(1)\)
PS:最终发现直接每次询问都做一遍也是可以过的。。。唉。。。

UVA 101

题目描述:有编号从\(0\)\(n-1\)\(n\)个箱子按顺序排成一行,现有\(5\)种操作:
1、move a onto b,将放在编号\(a\)\(b\)上面的箱子放回原处,然后把\(a\)放在\(b\)的上面
2、move a over b,将放在编号\(a\)上面的箱子放回原处,然后把\(a\)放在\(b\)那堆箱子的最上面
3、pile a onto b,将放在编号\(b\)上面的箱子放回原处,然后把\(a\)以及\(a\)上面的箱子按原顺序放在\(b\)的上面
4、pile a over b,把\(a\)以及\(a\)上面的箱子按原顺序放在\(b\)那堆箱子的最上面
5、quit,结束操作
NOTE:如果\(a=b\),那么操作无效,即跳过该操作,不做任何处理

solution
英语不太好,没理解好题意,理解后就是一道栈模拟。

UVA 102

题目描述:有三个箱子,每个箱子都装着不同种类的垃圾,垃圾有三种:brown, green, clear bottles,现在要将垃圾分类,每个箱子只装一种垃圾,将一个垃圾移动一次记为一次操作,问最少要多少次操作才能将垃圾分类,并输出箱子对应的垃圾种类,若有多解则输出字典序最小的解。

solution
暴力穷举箱子对应的垃圾种类,不属于该箱子的就要移动一次

UVA 103

题目描述:有\(n\)\(m\)维箱子,若第\(i\)个箱子每一维的边长为\(d_k\), 第\(j\)个箱子每一维的边长为\(e_k\),且存在一个\(d_k\)的排列,使得\(d_k<e_k\),那么箱子\(i\)可以放在箱子\(j\)的里面,问最多可以有多少层箱子嵌套。

solution
根据题意构图,然后跑一次最长路径

UVA 104

题目描述:有\(n\)种货币,货币两两之间有汇率\(rate\),但\(i\)\(j\)的汇率与\(j\)\(i\)的汇率不一定相同。从某一种货币出发,经过不超过\(n\)次的兑换,最终回到那种货币可能会能获利超过\(1%\),求出最少兑换次数对应的方案。

solution
因为题目问的是最少兑换次数,所以可以考虑一步一步地扩展。记\(f[i][j][k]\)表示经过\(i\)次兑换后,从\(j\)货币出发最多能得到多少\(k\)货币,dp时枚举\(p\),用\(f[i][j][k]*rate[k][p]\)更新\(f[i+1][j][p]\),当发现某一种货币对自己的汇率超过\(1.01\)时,就可以输出对应方案。

UVA 105

题目描述:给出\(n\)座大楼的坐标范围以及高度,求出每个坐标对应的最高高度。

solution
模拟题

UVA 106

题目描述:求出满足\(x<y<z \leq n, x^2 + y^2 =z^2, (x, y, z)=1\)的三元数对个数,并求出\(n\)以内不属于任何一个该种三元数对(去掉最后一个条件)的数字个数

solution
看到\(n\)比较大,还以为要\(nlogn\)预处理所有的答案,结果并不需要。。。
先不管\(x, y\)的大小。首先判断\(x, y\)的奇偶性。因为\((x, y, z)=1\),所以\(x, y\)一定是一奇一偶或者是两奇。
假设为两奇,则\(z\)为偶数,设\(x=2p-1, y=2q-1, z=2w\),

\[x^2+y^2=z^2 \]

\[(2p-1)^2+(2q-1)^2=(2w)^2 \]

\[4(p^2+q^2-p-q)+2=4w^2 \]

显然左式不是\(4\)的倍数,所以\(x, y\)为一奇一偶,\(z\)为奇数。

假设\(x\)为奇数,\(y\)为偶数

\[x^2=(z+y)(z-y) \]

\((z+y, z-y)=1\), 则\((y, z)=1\)
证:

\[\because (z+y, z-y)=1 \]

\[\therefore (2y, z+y)=1, (y, z+y)=1, (y, z)=1 \]

因为\((z+y, z-y)=1\),所以\((z+y), (z-y)\)都是完全平方数,假设\((z+y)\)不是完全平方数,即存在一个质因子只有奇数个,但\((z+y)(z-y)\)是一个完全平方数,所以\((z-y)\)也会有那个质因子,\((z+y, z-y)=1\)不成立。

\(p^2=z+y, q^2=z-y\), 则\(x=pq, y=\frac{p^2-q^2}{2}, z=\frac{p^2+q^2}{2}\)
显然\((x, y, z)=1, x, y < z\)
所以做法就是枚举\(p, q, (p, q)=1\),然后把\(kx, ky, kz, (k \in N^{*})\)打上标记,最后数一下有多少个数没有被标记(第二个询问的答案)

UVA 107

题目描述:已知\(N^k=M, (N+1)^k=H\), 给出\(M, H\),求出\(\sum_{i=0}^{k-1} N^i\)\(\sum_{i=0}^{k} N^{i}(N+1)^{k-i}\)

solution
\(k=\frac{logM}{logN}=\frac{LogH}{log(N+1)}\),用这个条件把\(N\)逼近,然后就可以求\(k\),然后模拟计算

UVA 108

题目描述:求最大子矩阵和。

solution
时限开了\(3s\),可以直接暴力做,也可以用\(O(n^3)\)来做

UVA 109

题目描述:给出\(n\)个凸包和\(m\)个点,求出包含至少一个点的凸包的面积和。

solution
用等面积法判断点是否在凸包内,剩下的就是计算几何的知识。

posted @ 2017-09-27 09:28  GerynOhenz  阅读(449)  评论(0编辑  收藏  举报