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
用等面积法判断点是否在凸包内,剩下的就是计算几何的知识。
UVA题解一的更多相关文章
- UVA题解三
UVA题解三 UVA 127 题目描述:\(52\)张扑克牌排成一列,如果一张牌的花色或者数字与左边第一列的最上面的牌相同,则将这张牌移到左边第一列的最上面,如果一张牌的花色或者数字与左边第三列的最上 ...
- UVA题解二
UVA题解二 UVA 110 题目描述:输出一个Pascal程序,该程序能读入不多于\(8\)个数,并输出从小到大排好序后的数.注意:该程序只能用读入语句,输出语句,if语句. solution 模仿 ...
- [题解]UVa 11082 Matrix Decompressing
开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...
- [题解]UVa 10891 Game of Sum
在游戏的任何时刻剩余的都是1 - n中的一个连续子序列.所以可以用dp[i][j]表示在第i个数到第j个数中取数,先手的玩家得到的最大的分值.因为两个人都很聪明,所以等于自己和自己下.基本上每次就都是 ...
- [题解]UVa 10635 Prince and Princess
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对 ...
- PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版
, '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorith ...
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力 ...
- UVA 11426 GCD - Extreme (II) (欧拉函数)题解
思路: 虽然看到题目就想到了用欧拉函数做,但就是不知道怎么做... 当a b互质时GCD(a,b)= 1,由此我们可以推出GCD(k*a,k*b)= k.设ans[i]是1~i-1与i的GCD之和,所 ...
- UVa 1329 - Corporative Network Union Find题解
UVa的题目好多,本题是数据结构的运用,就是Union Find并查集的运用.主要使用路径压缩.甚至不须要合并树了,由于没有反复的连线和改动单亲节点的操作. 郁闷的就是不太熟悉这个Oj系统,竟然使用库 ...
随机推荐
- bzoj4815[CQOI2017]小Q的格子
题意 不简述题意了,简述题意之后这道题就做出来了.放个原题面. 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理. 每当小Q不知道如何解决时,就只好向 ...
- 题解 P1567 【统计天数】
天哪!竟然没人用优先队列! 小金羊又来水题了... 优先队列中的大根堆帮助我们把时间复杂度降到O(n+logn) 首先我们先了解一下大根堆... 大根堆的性质:根节点比子节点大, 这意味着最上面的节点 ...
- 如何使用火狐下的两款接口测试工具RESTClient和HttpRequester发送post请求
Chrome下有著名的Postman,那火狐也有它的左膀右臂,那就是RESTClient和HttpRequester.这两款工具都是火狐的插件,主要用来模拟发送HTTP请求,HTTP请求最常用的两种方 ...
- CF891E [数学题]
1.答案=初始乘积-最终乘积的期望.然后直接dp+ntt是O(nklogk) 2.考虑展开式子ans=sum(a[i]-b[i]),大概感受一下未知数个数相同的项系数相同,问题在于如何求系数 3.没思 ...
- BZOJ4070 [Apio2015]雅加达的摩天楼 【分块 + 最短路】
题目链接 BZOJ4070 题解 考虑暴力建图,将每个\(B_i\)向其能到的点连边,复杂度\(O(\sum \frac{n}{p_i})\),当\(p\)比较小时不适用 考虑优化建图,每个\(dog ...
- 代码收藏系列--jquery--筛选器、事件绑定技巧
Jquery筛选器的一些常用技巧,比如过滤属性等 /* 过滤获取没有含data-xsui-grid-colspan的节点 */$(this).find('.xsui-grid-cell:not([da ...
- 音视频处理之FFmpeg程序的介绍与使用20180302
一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...
- selenium - switch_to.frame()- 内嵌表单的切换
表单嵌套frame/iframe webDriver只能在一个页面上对元素识别和定位,对于frame/iframe表单内嵌页面上的元素无法直接定位,此时就需要通过switch_to.frame()方法 ...
- UESTC--1655
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1655 分析:注意可能会反向. #include<iostream> #include<c ...
- springboot项目启动成功后执行一段代码的两种方式
springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...