08 2012 档案

摘要:在网上找到一个很好的算法,仔细观察可以发现,目标序列的开头几个乌龟都是经过移动后形成的,只要从原始序列中对比查找目标序列是否相同就能很快得到答案 ,代码够短了吧,呵呵 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=1093 首先找到需要移动的字符串,方法如下:以初始序列为准,设初始序列下标为i, 目的序列下标为j, 从n-1开始,如果两下标对应的字符串相等,下标同时减一,否则仅初始序列 阅读全文
posted @ 2012-08-15 22:38 godjob 阅读(239) 评论(0) 推荐(0)
摘要:找规律1: 12 1 13 1 1 14: 1 2 1 5 1 2 1 16 1 2 2 17 1 2 2 1 18 1 2 2 2 19: 1 2 3 2 110 1 2 3 2 1 111 1 2 3 2 2 112 1 2 3 3 2 113 1 2 3 3 2 1 114 1 2 3 3 2 2 115 1 2 3 3 3 2 116: 1 2 3 4 3 2 1n*n:2*n-1N*N-(N-1)*(N-1)-12*n-2因为完全平方数的最小step是确定的所以,以完全平方数为界限。n*n: 1......n......1 minstep:2*n-1..n*(n+1) 1...... 阅读全文
posted @ 2012-08-15 17:17 godjob 阅读(148) 评论(0) 推荐(0)
摘要:必然存在整数x(1=<x <= n)满足:当 s1 = 1+2+3+...+x+..+n>= k时,有s2 = 1+2+3+...-x+..+n== k,即多出的x肯定在1~n之间。s1-s2 = s1 - k = 2x所以,我们想求最小的n,也就是求最小的满足条件的s1,而它与k的差必为偶数,剩下的暴力找就可以了。#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<queue>#include<stack> 阅读全文
posted @ 2012-08-14 21:12 godjob 阅读(346) 评论(0) 推荐(0)
摘要:Q253: Cube painting我們想要為方塊塗上顏色,我們有三種顏色:藍色、紅色、綠色。方塊的每一面塗上其中一種顏色。現在,我們把方塊的6個面以1~6來編號,如下圖Figure 1:因為一個方塊有6面,所以我們有36=729種不同的方式來塗方塊。然而當我們忽略面上的編號時,不同塗方塊的方式就會少很多,那是因為方塊可以旋轉的緣故。請看以下的例子:我們以6個字元來表達一個方塊6個面上塗的顏色(字元為b,r,g其中之一,分別代表blue, red, green)。第i個字元代表第i面上的顏色,例如下圖Figure 2就是rbgggr的圖,Figure 3就是rggbgr的圖。請注意:Figu 阅读全文
posted @ 2012-08-04 21:44 godjob 阅读(883) 评论(2) 推荐(0)
摘要:#include <iostream> #include <cmath> using namespace std; int main(int ac, char *av[]) { int step; while (cin >> step, step) { // 确定步数数字所在的列或者行。 //ceil 返回大于或者等于指定表达式的最小整数 int column = (int)ceil(sqrt(step)); // 确定对角线上的数字:column * (column -... 阅读全文
posted @ 2012-08-04 20:52 godjob 阅读(290) 评论(0) 推荐(0)