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
用等面积法判断点是否在凸包内,剩下的就是计算几何的知识。

UVA题解一的更多相关文章

  1. UVA题解三

    UVA题解三 UVA 127 题目描述:\(52\)张扑克牌排成一列,如果一张牌的花色或者数字与左边第一列的最上面的牌相同,则将这张牌移到左边第一列的最上面,如果一张牌的花色或者数字与左边第三列的最上 ...

  2. UVA题解二

    UVA题解二 UVA 110 题目描述:输出一个Pascal程序,该程序能读入不多于\(8\)个数,并输出从小到大排好序后的数.注意:该程序只能用读入语句,输出语句,if语句. solution 模仿 ...

  3. [题解]UVa 11082 Matrix Decompressing

    开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...

  4. [题解]UVa 10891 Game of Sum

    在游戏的任何时刻剩余的都是1 - n中的一个连续子序列.所以可以用dp[i][j]表示在第i个数到第j个数中取数,先手的玩家得到的最大的分值.因为两个人都很聪明,所以等于自己和自己下.基本上每次就都是 ...

  5. [题解]UVa 10635 Prince and Princess

    讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对 ...

  6. PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版

    , '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorith ...

  7. UVa 127 - &quot;Accordian&quot; Patience POJ 1214 链表题解

    UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力 ...

  8. UVA 11426 GCD - Extreme (II) (欧拉函数)题解

    思路: 虽然看到题目就想到了用欧拉函数做,但就是不知道怎么做... 当a b互质时GCD(a,b)= 1,由此我们可以推出GCD(k*a,k*b)= k.设ans[i]是1~i-1与i的GCD之和,所 ...

  9. UVa 1329 - Corporative Network Union Find题解

    UVa的题目好多,本题是数据结构的运用,就是Union Find并查集的运用.主要使用路径压缩.甚至不须要合并树了,由于没有反复的连线和改动单亲节点的操作. 郁闷的就是不太熟悉这个Oj系统,竟然使用库 ...

随机推荐

  1. Contest 8

    A:做法应该很多,比较好想的是每个点都往上倍增找到其能更新到的点. #include<iostream> #include<cstdio> #include<cstdli ...

  2. 常州day2

    Task1 为了测试小 W 的数学水平,果果给了小 W N 个点,问他这 N 个点能构成的三角形个数. 对于 100%的数据:N<=100,保证任意两点不重合,坐标<=10000 恶心题( ...

  3. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)

    A 模拟 B 发现对于每个连通块,只有为完全图才成立,然后就dfs C 构造 想了20分钟才会,一开始想偏了,以为要利用相邻NO YES的关系再枚举,其实不难.. 考虑对于顺序枚举每一个NO/YES, ...

  4. Android开发技术重要参考资料

    只言片语 有的时候看不懂别人的代码,觉得自己笨:其实,你想多了,看不懂不是因为你蠢而是别人的代码写得烂:所以,别那么宽容别人却苛责自己. 参考资料 郭霖 way 爱哥 有心 胡凯 robin trin ...

  5. BZOJ1002【FJOI2007】轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6917  Solved: 3777[Submit][Statu ...

  6. 【BZOJ 4449】[Neerc2015]Distance on Triangulation 多边形分治结构

    这题好神啊……正解方向是分治,据我所知的分治方法有:I.离线后直接对多边形以及所有的询问进行分治 II.建立多边形的分治结构(对于三角形来说类似线段树,对于对角线来说类似平衡树),然后每次在这个分治结 ...

  7. python基础----__next__和__iter__实现迭代器协议

    #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' class Foo: def __init__(self,x): self.x=x def __iter__ ...

  8. vmware中无法ping通主机的问题

    虚拟机使用NAT方式运行一段时间后,发现无法ping通主机(物理机),显示错误如下 ipconfig如下 查看虚拟机中的网络连接,显示"未识别网络" 分析: 查看了网络上的一些资料 ...

  9. CF540 B 贪心

    坑在B题是常态,弱智的日常. 是找中位数不是平均值. 慌了,乱写了 出了一塌糊涂的ZZ代码 特记一下 /** @Date : 2017-08-27 17:25:11 * @FileName: B.cp ...

  10. Mysql通过show processlist排查数据库执行慢

    RDS for MySQL使用的是InnoDB引擎.不同于MyISAM引擎只提供表锁,InnoDB提供不同级别的锁.但是在我们日常的操作过程中经常由于对数据库不当的SQL操作导致出现长时间的锁,造成其 ...