uvaoj
gwq5210
这个作者很懒,什么都没留下…
展开
-
uvaoj 1600 Patrol Robot 10603 Fill BFS
uvaoj 1600 Patrol Robot一个巡逻机器人在一个n*m的网格上从左上角(1,1)走到右下角(n,m)。格子中有的地方是空地,用0表示,有的地方是障碍,用1表示。机器人每次可以往相邻的四个方向走,每次这个机器人不能连续穿越k个障碍,也就是说,能连续穿越障碍的最大个数是k,求从起点到终点的最短路径长度。起点和终点保证是空地。在每一个格子,需要用一个三元组(x,y,k)来表示,即在位置(原创 2015-09-01 10:48:10 · 2575 阅读 · 0 评论 -
uvaoj 11029 Leading and Trailing 取log和快速幂
uvaoj 11029 Leading and Trailing 取log和快速幂给定n和k,求n^k的最低三位和最高三位,数字很大,不能直接求出来。最低三位可以使用快速幂在logk的复杂度下解决。对于最高三位,设log为以10为底的对数,那么log(n^k)=klogn,这个值很容易算出来,我们设n^k用科学计数法表示为d*10^p,其中d为大于等于1小于10的实数,p为整数。那么log原创 2015-01-09 19:19:52 · 482 阅读 · 0 评论 -
uvaoj 571 Jugs 互质数
uvaoj 571 Jugs 互质数本题只要求给出一个解,不要求最优。所给的两个罐子容量一定互质,因此必然可以倒出从0到大罐容量间的任何整数值。原理是若A,B互质,则最小公倍数为A×B,即不存在一个1 现在的问题就是用AB两个罐子相互倒水来模拟这个数学过程。设小罐容量为A,大罐容量为B。每次将A装满后倒入B中。若第m次后B已装满,A剩下的水量为r1,则有:r1 = mA mod B原创 2015-01-09 17:22:30 · 493 阅读 · 0 评论 -
uvaoj 10130-SuperSale 动态规划
uvaoj 10130-SuperSale 动态规划就是一个背包问题,有多种物品,每种物品有价值和重量,个数无限,还有多个人,每个人可以拿的重量时一定的,并且每个人只能拿一种物品的一个,求这么多人取的最大价值是多少。其实对于每一个人来说,就是一个01背包,但是我们不需要求多次,只需要求出来能拿重量最多的那个,那么少的自然就出来了,最后再加起来就行了。代码如下:/********原创 2014-12-19 23:36:11 · 540 阅读 · 0 评论 -
uvaoj 10404 Bachet's Game 减法博弈
uvaoj 10404 Bachet's Game 减法博弈就是一个巴什博弈的变形,叫做减法博弈。轮流取石子,只能取给定的集合中的石子个数,取到最后一个石子的人获胜。使用dp[i]表示有i颗石子时的胜负状态,则i-a[j]是之前能达到的状态,如果他们中至少有一个是必胜态,那么i是必败态,否则i时必胜态。代码如下:/**********************************原创 2014-12-19 21:55:17 · 534 阅读 · 0 评论 -
uvaoj 437 The Tower of Babylon 简单dp
uvaoj 437 The Tower of Babylon 简单dp用给定的几种类型砖头建造一个塔,一种砖头用(x,y,z)三个维度来表示,可以任意旋转它们来使一个面成为底面,另一个面成为高,建造塔的过程中,上边的砖头的面的两个维度都必须小于下边的面的两个维度,每种类型的砖头个数是无限多的。因为可以任意旋转,所以,每个砖头都可以通过旋转得到六种底面的砖头(暂时忽略旋转得到的是一样的),所原创 2014-12-19 21:04:03 · 517 阅读 · 0 评论 -
uvaoj 11121 Base -2 整数转成负数进制
uvaoj 11121 Base -2 整数转成负数进制给定一个十进制的数,将其转成-2进制的数。也就是n=b0+b1*(-2)+b2*(-2)^2+b3*(-2)^3...。其中bi为0或1。算法的描述很简单:n mod -2 余数可能为-1,0,1,但是不能出现-1,只能有0,1所以将-1变为1,并且商要加1。然后依此迭代直到商为0为止。先来看看对一个数n变成m(m>0)进原创 2015-01-09 10:52:27 · 572 阅读 · 0 评论 -
uvaoj 106 Fermat vs. Pythagoras 毕达哥拉斯三元组
uvaoj 106 Fermat vs. Pythagoras 毕达哥拉斯三元组给定方程x^2+y^2=z^2,在1到1000000范围内找出三元组(x,y,z)的数目,其中三元组要求x这个方程与勾股定理有密切的关系。1. 勾股定理和勾股数(毕达哥拉斯数)勾股定理可以说是全部数学中最古老也最家喻户晓的一个定理,在西方它被称为毕达哥拉斯定理(Pythagorean Theore原创 2015-01-08 21:34:46 · 853 阅读 · 0 评论 -
uvaoj 138 Street Numbers 佩尔方程
uvaoj 138 Street Numbers 佩尔方程这道题可以用暴力搜索的方法来做,算法效率是O(n3),但事实上是可以用数论的方法来生成所有解的,下面将用最简单的数学语言进行介绍。设全部的房子数为n,她住的为k,那么按照题目的要求n和k必须满足:1 + 2 + ... + (k – 1) = (k + 1) + (k + 2) + ... + (n) (1)用等差原创 2015-01-09 00:42:14 · 480 阅读 · 0 评论 -
组合数C(n,m)的求法总结,卢卡斯定理
组合数C(n,k)的求法总结与组合数有关的两个最重要内容是杨辉三角和二项式定理。杨辉三角前10行如下所示:另一方面,将(a+b)^n展开,系数正好和杨辉三角一致。一般有(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+...+C(n,n)b^n。给定n,如何求出(a+b)^n所有项的系数呢?方法一,递推,利用杨辉三角的性质,当前数等于上方两个数的和,原创 2015-01-27 19:21:20 · 2287 阅读 · 0 评论 -
uvaoj 10820 Send a Table 欧拉函数打表
uvaoj 10820 Send a Table 欧拉函数打表这个题目就是让求小于等于n的数中,互质二元组(x,y)的个数。因为(x,y)和(y,x)不同,我们假定只考虑x下面先介绍一下欧拉函数:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。欧拉原创 2015-01-09 14:57:57 · 571 阅读 · 0 评论 -
uvaoj 620 - Cellular Structure(题意好难理解)
620 - Cellular Structure(题意好难理解)给了一个细胞链,细胞只有A和B两种,细胞链有几种生长的方式,看看给定的一个细胞链是否是通过这几种方式得到的,要求给出现在所处的状态。我刚开始也是这样想的,但是没想到偶数就直接是最后一种情况,看了看网上的代码,不过还是有点儿懵。代码如下:/***************************************原创 2014-12-19 22:26:28 · 849 阅读 · 0 评论 -
uvaoj 12096 The SetStack Computer 集合操作用法
uvaoj 12096 The SetStack Computer 集合操作用法有一个初始为空的栈,有好多类型的操作,PUSH,DUP,UNION,INTERSECT,ADD,因为是集合的集合,所以使用STL中的set,和对set的操作函数,set_union和set_intersection,和函数inserter。代码如下:/****************************原创 2015-01-21 15:31:11 · 632 阅读 · 0 评论 -
uvaoj 12716 GCD XOR 打表
uvaoj 12716 GCD XOR 打表输入整数n(1对于异或运算,有a^b^b=a,所以可以推出,若a^b=c,则a^c=b,可以枚举a和c,算出b,验证是否有gcd(a,b)=c,注意到c是a的约数,所以,可以使用素数筛法的方法,复杂度为nlogn。进一步可以发现,c=a-b,因为a-b=c,假设存在c使得a-b>c,那么c代码如下:/*****************原创 2015-01-21 21:59:56 · 492 阅读 · 0 评论 -
uvaoj 11582 Colossal Fibonacci Numbers! 求周期
uvaoj 11582 Colossal Fibonacci Numbers! 求周期输入两个非负整数a,b和正整数n(0=0。因为是对n取模,设F(i)=f(i)%n,那么当(F(i),f(i+1))重复时,整个序列就开始重复,因为余数最多有n种,所以最多n^2项就会出现重复。设周期为T,那么F(n)=F(n%T)。只需计算出0-T就可以了。代码如下:/*************原创 2015-01-22 12:49:30 · 546 阅读 · 0 评论 -
uvaoj 136 Ugly Numbers 优先队列使用
uvaoj 136 Ugly Numbers 优先队列使用丑数是不能被除2,3,5以外的其他素数整除的数,把丑数从小到大排列,1,2,3,4,5,6,8,9,10,12,15.......,求第1500个丑数。对于丑数x,2x,3x,5x,都是丑数,我们可以从小到大生成丑数,将生成的丑数保存起来,每次取出来最小的一个,然后生成三个丑数,但这个会重复,可以使用set去重。代码如下:/原创 2015-01-21 16:45:15 · 719 阅读 · 0 评论 -
uvaoj 540 Team Queue 队列模拟
uvaoj 540 Team Queue 队列模拟t个团队的人在排队,每新来一个人时,如果它有队友在排队,那么这个人就排在最后一个队友的后边,如果没有任何队友排队,那么这个人排到长队的队尾,我们可以将这个队列看做两级,一级是团队队列,一个是团队自身的队列。模拟一下就行了。代码如下:/****************************************************原创 2015-01-21 16:20:00 · 603 阅读 · 0 评论 -
uvaoj 10815 Andy's First Dictionary set的基本使用
uvaoj 10815 Andy's First Dictionary set的基本使用将单词去重后按照字典序输出。代码如下:/************************************************************************* > File Name: 10815.cpp > Author: gwq > Mail: gwq5210@原创 2015-01-20 14:51:54 · 631 阅读 · 0 评论 -
uvaoj 156 Ananagrams map的基本使用
uvaoj 156 Ananagrams map的基本使用给定一些单词,找出满足如下条件的单词:该单词不能通过字母重排,得到文本中的另外其他单词,在判断满足条件时,不区分大小写,但输出时应该保留输入中的大小写。我们可以将单词都变成小写,然后将单词中的字母按照大小排列,那些不满足条件的单词就会出现多次,而满足条件的单词只会出现一次,因为要记录之前的单词,可以通过map集合来映射。代码如下原创 2015-01-20 15:27:03 · 798 阅读 · 0 评论 -
uvaoj 10051 Tower of Cubes 最长上升子序列 记录路径
uvaoj 10051 Tower of Cubes 最长上升子序列 记录路径从轻到重给定了n个正方体,每个正方体的每个面都有一种颜色,颜色用一个整数表示,要建造一个塔,不能将重的放在轻的正方体上,尽可能建造高的塔,并且要求相邻面的颜色一样。这个类似于最长上升子序列,用dp[i][j]表示第i个正方体的j面朝上时建造的最高的塔的高度,用pre[i][j]记录dp[i][j]的前驱的状态(第几个原创 2014-12-23 16:03:40 · 514 阅读 · 0 评论 -
uvaoj 10534 Wavio Sequence 最长上升子序列(LIS)
uvaoj 10534 Wavio Sequence 最长上升子序列(LIS)给定一个正整数的序列,求出一个长度为2*n+1的序列,使得前n+1个数严格递增,后n+1个数严格递减,求使这个序列的长度最长是多少。设给定的序列为n个数,记为num[1...n],如果我们求得了以num[i]结尾的最长上升子序列的长度(记为dp1[i])和以num[i]开始的最长下降子序列的长度(记为dp2[i]原创 2014-12-22 18:15:41 · 503 阅读 · 0 评论 -
uvaoj 10717 Mint 暴力枚举所有情况
uvaoj 10717 Mint 暴力枚举所有情况要建造桌子,每个桌子必须由四种不同类型的腿组成,每种腿的高度给出,可以叠加,现在给定一些类型的材料的高度和一个期望的桌子的高度,看看不超过这个高度的最大高度是多少,大于这个高度的最小高度是多少。我们任选四个类型的材料,因为四个腿是一样的,所以,这四个材料组成的可能高度是这四个数的最小公倍数的倍数。数据量比较小,直接暴力枚举。这就差不多涉及到原创 2015-01-08 23:39:38 · 606 阅读 · 0 评论 -
uvaoj 12169 Disgruntled Judge 扩展欧几里得算法
uvaoj 12169 Disgruntled Judge 扩展欧几里得算法一个裁判,找了3个整数x1,a和b,按照递推公式xi=(axi-1+b)%10001,计算出了一个长度为2n的序列,n是测试数据的组数,然后他把n和x1,x3,。。。,x2n-1写到输入文件中,x2,x4,。。。,x2n写到输出文件中。你的任务是找出对应的x2,x4,。。。,x2n。任意输出一个合法的。如果知道了a原创 2015-01-27 14:15:14 · 583 阅读 · 0 评论 -
uvaoj 138 Software CRC 大数取模
uvaoj 138 Software CRC 大数取模求循环冗余检验(CRC)的值,循环冗余检验在计算机网络中应该提到过,计算的方法差不多。不过这里固定了要在后边加上2个字节的数,加上两个字节后,就组成了一个很大的整数,这个整数要处理34943为0,我们就设计算出来的检验位为x,原数为n,那么合起来的数为m=(n代码如下:/*******************************原创 2015-01-06 19:03:13 · 577 阅读 · 0 评论 -
uvaoj 357 - Let Me Count The Ways 动态规划
357 - Let Me Count The Ways也是qiu原创 2014-11-13 11:39:05 · 820 阅读 · 0 评论 -
uvaoj 147 - Dollars 动态规划
147 - Dollarsyou原创 2014-11-13 11:31:03 · 527 阅读 · 0 评论 -
uvaoj 674 - Coin Change
uvaoj 674 - Coin Change一个henjianda原创 2014-10-30 11:07:44 · 663 阅读 · 0 评论 -
uvaoj 10192 - Vacation 最长公共子序列(LCS)
10192 - Vacation父亲原创 2014-11-13 11:27:13 · 536 阅读 · 0 评论 -
uvaoj 116 Unidirectional TSP 动态规划记录字典序最小路径
116 - Unidirectional TSP原创 2014-11-13 10:54:28 · 936 阅读 · 0 评论 -
uvaoj 10131 Is Bigger Smarter? 最长上升子序列(LIS)
10131 - Is Bigger Smarter?原创 2014-11-13 11:11:58 · 480 阅读 · 0 评论 -
uvaoj 10405 Longest Common Subsequence 最长公共子序列
点击打开链接原创 2014-10-28 11:35:01 · 561 阅读 · 0 评论 -
uvaoj 10003 Cutting Sticks 区间dp
uvaoj 10003 Cutting Sticks原创 2014-11-10 00:43:02 · 735 阅读 · 0 评论 -
uvaoj 103 Stacking Boxes 最长上升子序列LIS
uvaoj 103 Stacking Boxes原创 2014-10-30 23:31:28 · 599 阅读 · 0 评论 -
uvaoj 10066 - The Twin Towers 最长公共子序列(LCS)
10066 - The Twin Towers原创 2014-11-13 11:22:00 · 521 阅读 · 0 评论 -
uvaoj 562 - Dividing coins 动态规划-01背包
给定m个硬币,m原创 2014-11-16 00:49:30 · 615 阅读 · 0 评论 -
uvaoj 10006 Carmichael Numbers 快速幂取模
uvaoj 10006 Carmichael Numbers 快速幂取模原创 2015-01-05 23:56:25 · 524 阅读 · 0 评论 -
uvaoj 10375 Choose and divide 唯一分解定理
uvaoj 10375 Choose and divide 唯一分解定理已知C(m,n)=m!/(n!(m-n)!),输入整数p,q,r,s(p>=q,r>=s,p,q,r,s可以使用唯一分解定理来做,用一个数组表示唯一分解式中各个素数的指数,可正可负。每乘上一个整数,就把相应的素因子指数上加上相应指数,除也一样。代码如下:/****************************原创 2015-01-25 10:55:55 · 610 阅读 · 0 评论 -
10673 Play with Floor and Ceil 简单数学
10673 Play with Floor and Ceil 简单数学用表示向下取整floor,ceil表示向上取整。那么对于x=p*floor(x/k)+q*ceil(x/k),存在一组或多组p,q使得式子成立。现在给定x和k,求出任意一个p和q。经过简单分析就可以得到:p+q=k,q=x%k。代码如下:/*************************************原创 2015-01-06 20:14:16 · 470 阅读 · 0 评论 -
uvaoj 10791 Minimum Sum LCM 类似欧拉定理的写法
uvaoj 10791 Minimum Sum LCM 类似欧拉定理的写法给定一个数n,求一个集合,这个集合的最小公倍数是n,并且这个集合中数的和最小。处理好集中情况:1)n为1时,应该输出2。2)n为素数时,应该输出n+1。3)n为某个素数的次方,即只有一个质因子,应该输出n+1。4)n为2^31-1时,这个数为质数,应该输出2^31,所以要考虑用long long。原创 2015-01-06 22:40:53 · 486 阅读 · 0 评论 -
uvaoj 531 Compromise 最长公共子序列求出子序列
Compromise原创 2014-11-17 18:27:58 · 559 阅读 · 0 评论