UVA题解一】的更多相关文章

UVA题解三 UVA 127 题目描述:\(52\)张扑克牌排成一列,如果一张牌的花色或者数字与左边第一列的最上面的牌相同,则将这张牌移到左边第一列的最上面,如果一张牌的花色或者数字与左边第三列的最上面的牌相同,则将这张牌移到左边第三列的最上面.只有最上面的牌可以移动,如果同时有多张牌可以移动,则先移动最左边的牌,若某张牌可以移到左边第三列的上面,则优先移到左边第三列.若某个时刻某一列为空,则那一列后面的列往前移动.求最后还剩多少列,以及每一列有多少张牌. solution 直接栈模拟.因为每张…
UVA题解二 UVA 110 题目描述:输出一个Pascal程序,该程序能读入不多于\(8\)个数,并输出从小到大排好序后的数.注意:该程序只能用读入语句,输出语句,if语句. solution 模仿某一种排序算法(例如插入排序),递归输出答案. 时间复杂度:\(O(n!)\) UVA 111 题目描述:求两个数组的最长公共子串. solution DP 时间复杂度:\(O(n^2)\) UVA 112 题目描述:给出一棵树,判断是否存在一条从根到叶子节点的路径,路径上所有节点的权值和等于给定的…
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[…
开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且题目中然而并没有什么要求,所以说可以考虑思考一下这道题有木有什么"套路"之类的通法) 比如说有这么一组数据 原矩阵 输入 然后将每一行的和写在每一列对应的行上(很明显有问题) 然后调整,为了简便先每个向右挪个1(保障不会出现0什么之类的),接着就随便怎么移都可以,只要第一列满足且每一行的和…
在游戏的任何时刻剩余的都是1 - n中的一个连续子序列.所以可以用dp[i][j]表示在第i个数到第j个数中取数,先手的玩家得到的最大的分值.因为两个人都很聪明,所以等于自己和自己下.基本上每次就都是给对方留下一个烂棋局,所以上一个棋局应该是很优的,所以应该选择上一个棋局的最小值转移到当前棋局.所以得出了下面的方程dp[i][j] = min{dp[i + k][j](0 < k <= j - i)) dp[i][j - k](1 <= k <= j - i), 0}. 但是发现d…
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对应的位置都是唯一的,就用第一个序列的元素对第二个序列的元素进行重新编号,记录它们在第一个序列中出现的位置(如果不存在就随便记一个不能达到的值),不存在的话就说明它们对LCS没有贡献.那么看张图: 如果不能明白,那..看张反例: 有没有发现LCS的长度就是第二个序列的LIS的长度? /** * uva…
, '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorithm> #include<iterator> #include<cstring> //uva 10033 Problem G: Interpreter #define ONLINE_JUDGE using namespace std; ]; ]; int steps; ; int…
UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力的,要搞清楚怎样模拟也不easy啊,读题要非常细致. 纯指针的操作挺快的吧. 只是POJ 0ms,而UVa就0.2左右了. 三相链表: 1 仅仅要有叠起来的牌.那么就使用一个down指针指向以下的牌就能够了. 2 使用双向链表,能够方便前后遍历. 3 记得有了更新牌之后.又要又一次開始检查是否须要更…
思路: 虽然看到题目就想到了用欧拉函数做,但就是不知道怎么做... 当a b互质时GCD(a,b)= 1,由此我们可以推出GCD(k*a,k*b)= k.设ans[i]是1~i-1与i的GCD之和,所以最终答案是将ans[0]一直加到ans[n].当 k*i==j 时,ans[j]=k*euler[i]. 看完题解瞬间领悟:神奇海螺 突然忘记欧拉函数是什么:欧拉函数 代码: #include<cstdio> #include<cstring> #include<cstdlib…
UVa的题目好多,本题是数据结构的运用,就是Union Find并查集的运用.主要使用路径压缩.甚至不须要合并树了,由于没有反复的连线和改动单亲节点的操作. 郁闷的就是不太熟悉这个Oj系统,竟然使用库中的abs就会WA,自己写了个abs小函数就过了. 题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4075 #include <s…