Sicily
文章平均质量分 79
有田十三
Everyday has its question
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Sicily 1119. Factstone Benchmark
题目大意:求满足n! 解题思路:通过两边取对数变化不等式 为 k > sum(log(i))/ log(2)。数太大了一开始以为要做大数计算。。。这个题放到高中应该很容易,一下子没想到。// 1119. Factstone Benchmark// n! k > sum(log10(i))/log10(2) #include #include us原创 2013-12-06 23:29:21 · 696 阅读 · 0 评论 -
Sicily 1822. Fight Club
题目大意:一圈人与相邻人对打,必有一人获胜,问某人是否可以通过更改搏斗顺序获胜。解题思路:1.乍一看以为是邻接矩阵遍历,但是不相邻的两个人不一定可以相遇。2.所以问题变为判断不相邻两人是否可以相遇,第i个人是否能与第j人相遇要满足条件P。3.令dp[i][j]记录i与j是否相遇,那么i与j相遇的条件P = dp[i][k] && dp[k][j] && (win[i][k] ||原创 2014-01-09 20:45:44 · 981 阅读 · 0 评论 -
Sicily 1063. Who's the Boss
题目大意:按照薪水和身高排序,薪水与身高最高的为BOSS。求给定ID人的BOSS及下属数目。解题思路:1.惯例先吐槽。N次TLE,最后0.98险过。2.根据题意,按照要求条件建立N叉树,最后输出某节点的父节点ID及子节点个数。3.建树过程分为三个步骤:a)首先按照薪水排序,薪水最少的员工为下属员工最少的员工(即为叶节点);b)从工资最低的员工开始遍历,第一个比其身高的人即为原创 2014-01-09 21:49:28 · 855 阅读 · 0 评论 -
Sicily 1006. Team Rankings
题目大意:计算全排列中某一序列,与给定序列的逆序差之和最小。解题思路:1.在计算逆序差之和最小前,首先要算逆序差。根据题意序列为ABCDE的全排列,我们可定义10个字母对,即:AB、AC、AD、AE、BC、BD、BE、CD、CE、DE如果当前序列A在B之前,我们令AB为1,若B在A之前AB为-1。这样当输入某序列时,可以得到一个10位的key。计算逆序差即为计算两个原创 2014-01-04 16:39:05 · 722 阅读 · 1 评论 -
Sicily 1935. Rebuild the tree
题目大意:根据前序和中序重建二叉树,并按bfs输出解体思路:关键注意重建二叉树时递归判断结束条件。bfs无难度。// 1935. Rebuild the 2-tree #include #include #include using namespace std;string pre,mid;int len,pos;struct Node{ char it原创 2014-01-02 16:39:32 · 641 阅读 · 0 评论 -
Sicily 1203. The Cubic End(数论乘法)
题目大意:立方求尾数。求一个数的立方尾数等于本身。解题思路:1.判断尾数相同,不需要将整个数乘完再取尾数。只要从低位开始,一位一位逐个匹配即可。2.尾数为1,3,7,9时,1立方尾数为1,3立方尾数为7,7立方尾数为3,9立方尾数为9。所以,最后一位只有相应4种可能。3.取尾数操作即求模,取最后一位即模10,最后两位模10^2。4.在立方取模时运用到数论乘法求模。a原创 2013-12-12 16:15:41 · 1405 阅读 · 1 评论 -
Sicily 1059. Exocenter of a Trian
题目大意:几何法计算三角形ABC的垂心解题思路:根据题意解题即可,但是计算过程需要三个主要的函数。1.向量旋转ratate():把向量分解成平行于x坐标轴和y坐标轴的向量,再分别旋转,最合把旋转结果合并。2.求中点middle():返回两点中点即可。3.求两直线交点intersection():只需计算两条直线即可求出交点,但是需要判断直线是否有斜率,分类讨论。// 1原创 2013-12-05 22:22:52 · 961 阅读 · 0 评论 -
Sicily 1500. Prime Gap
题目大意:求给定数前后质数之间的差。解题思路:分别记录给定数前一个质数和后一个质数,相减得到差即可。// 1500.Prime Gap #include using namespace std; bool isPrime( int num ){ for( int i = 2; i * i <= num; ++i ){ if( num %原创 2013-12-09 17:27:31 · 660 阅读 · 0 评论 -
Sicily 1099. Packing Passengers
题目大意:求线性方程的解。解题思路:根据题意大概可以转化成线性方程求解的模型。求满足 A * x + B * y = num的x、y,使Cost = CostA * x + CostB * y达到最小。1.首先判断A,B是否为0。如果A为0,B不为0,那么y为num/B;如果B为0,A不为0,那么x为num/B;如果A,B同时为0,则无解如果A,B都不为0,原创 2013-12-09 17:23:21 · 955 阅读 · 0 评论 -
Sicily 1259. Sum of Consecutive Primes
题目大意:求给定数,由多少组相邻质数相加等于给定数本身。解题思路:1.提前进行1-10000质数计算,记录至prime[]。打表肯定不会TLE。2.循环嵌套计算,注意循环结束条件prime[i] // 1259.Sum of Consecutive Primes #include using namespace std; int prime[] = {2,原创 2013-12-09 18:33:38 · 1937 阅读 · 0 评论 -
Sicily 1151. 魔板
题目大意:类似于华容道的按规则移动方块,达到预期状态。算法思想及主要数据结构:BFS(广搜)+ 康托展开 + Queue1、BFSI. 将初始状态放入队列,II. 得到队列中的第一个状态,则从队列中popIII. 得到pop出的状态与目标太进行比较,如果匹配则结束,否则对当前状态继续分别进行A、B、C三种操作,把得到的新状态依次放入队列。IV.只要队列原创 2013-12-03 19:16:32 · 627 阅读 · 0 评论 -
Sicily 1152/1153. 马周游
题目大意:给出马的初始位置,得出遍历棋盘的一条路径。解题思路:DFS(深搜)+剪枝。1、DFSI. 计算初始状态root下步可达点II. 如果下步可达,则继续计算下步的下步是否可达III. 如果下步不可达,则返回上一步计算其他方向下一步是否可达IV. 步数不为30,则重复II/III。2、剪枝仅仅使用DFS,递归效率低下。在进行下一步递原创 2013-12-03 19:20:43 · 861 阅读 · 0 评论 -
Sicily 1041. Pushing Boxes
题目大意:一个矩形房间里面有若干箱子。每次操作是把房间的其中一面墙往里移动,把箱子推到新的位置,问最后所有箱子的位置。解题思路:分上下左右四种情况分别考虑,按照题目描述模拟。以下墙上移(move_up)为例:1.首先沿列方向,计算每一列最大箱子数nb。用边界减去nb得到实际可以移动最大步长actual_step2.在移动前,判断预期移动步长与实际步长,取小值。题目假定当原创 2013-12-03 19:11:16 · 1135 阅读 · 0 评论 -
Sicily 1014. Specialized Four-Dig
题目大意:判断一个四位数十进制数,各位之和与转化为12,16进制数后各位之和是否相等。相等则输出这个数。解题思路:考察进制转化,只需求和即可。不需输出转化后的数。当然也可以打表。// 1014. Specialized Four-Dig #include using namespace std; // 进制转换,只需要求和即可 int toBase(int原创 2013-12-05 18:37:35 · 783 阅读 · 0 评论 -
Sicily 1142. Pancake Sorting(煎饼排序)
题目大意:煎饼排序。这个问题是Bill Gates想出来的。描述如下。一位餐厅侍者在送出一叠煎饼 (pancakes) 到顾客之前,发现厨师实在太困了,这些煎饼大小不一,混杂在一起堆成一叠,客人实在不会有太多好感。因此,在送出这些煎饼之前,这位侍者会使用一片锅铲将这些煎饼重新排成一叠由小而大排列的煎饼。不过,由于盘子太小,我们不能够将煎饼平铺后再重新排一次,而只能用锅铲卡在某个煎饼的下方,原创 2013-12-06 19:43:45 · 3132 阅读 · 0 评论 -
Sicily 1240. Faulty Odometer
题目大意:一个给定数,求小于这个数所有不包含4的数的个数。解题思路:方法1:拿到题以为直接遍历判断是否包含4即可。但是C++ 中string与int转化不像Java那么方便。放弃之。方法2:事先算出各位(如10,100,1000,10000)所包含的4的数量打表,然后用位数相乘。但每次计算会忽略本位为4时相应的数量。放弃之。方法3:看了答案之后才恍然大悟是变相的9进制转化为10原创 2013-12-05 19:04:23 · 841 阅读 · 0 评论 -
Sicily 1024. Magic Island
题目大意:图论,计算权值和最大的路径。解题思路:遍历所有路径,计算权值和,找出最大值即可。遍历可以通过递归或者循环。判断当前节点是否被访问可以通过两种方法:1.定义结构体,保存visited信息2.路径初始化。计算每个节点间的距离,如果此ji原创 2014-01-04 21:33:09 · 727 阅读 · 0 评论
分享