总结

来源:互联网 发布:网络电视u盘 编辑:程序博客网 时间:2024/05/12 18:39

题目描述

    给出字符串S和字符串T,现在你要把S的某一个字符和T的某一个字符交换,使得交换之后的S至少要有三个连续相同的字符,交换之后的T也要有三个连续相同的字符。问有多少种不同的交换方式。

输入

       第一行,一个字符串S。S只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且S任意两个相邻的字符都不相同。

       第二行,一个字符串T。T只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且T任意两个相邻的字符都不相同。

输出

       一个整数,满足要求的不同交换方式的数量。

样例输入

RGBRBRBRBGRG

样例输出

1

数据范围限制

提示


























输入样例

输出样例

样例解释


RGBRBR
BRBGRG

1



用S的第5个字符和T的第2个字符交换。

交换后S是“RGBRRR”,T是“BBBGRG”


RGRGR
GRG

2



用S的第2个字符和T的第2个字符交换。

或者用S的第4个字符和T的第2个字符交换。


BGBGBGBG
RBRBRBRBRB

0



 

题目描述

给你一个字符串S,S是已经被加密过的字符串。现在要求你把字符串S还原。字符串S可能会出现这样的格式:k(q),它表示字符串q重复了k次,其中q是0个或多个字符,而k是一个数字,范围是0至9。你只要把k(q)这样的格式全部展开,就能把S还原了,你要输出还原后的字符串的长度。

输入

一行,一个字符串S。字符串S只由‘(’、‘)’、0至9的数字组成,长度不超过50。所有的括号都是能匹配的,不用判断。

输出

一个整数,还原后的字符串的长度。答案不会超过2147483647。

样例输入

123

样例输出

3

数据范围限制

提示

 









































输入样例

输出样例

样例解释

123

3

 


10342(76)

8

还原后的字符串是:1034767633(562(71(9)))

19



还原后的字符串是:3567979567979567979


0(0)

0

 1(1(1(1(1(1(1(0(1234567890))))))))

0



 


1()66(5)

7

还原后的字符串是:6555555

提示:
50%的测试数据,只有一对括号,或者两对括号。

题目描述

有N级楼梯,第i级楼梯的高度是H[i]。你必须通过一系列的操作来爬楼梯,每一步,你只能做如下三个选择之一:
  1、如果后一级楼梯的高度比你当前所在楼梯的高度恰好高1,那么你可以从当前楼梯爬上后一级楼梯。
  2、只要你不是在第1级楼梯,如果你愿意,你可以从当前楼梯后退到前一级楼梯。
       3、假如你最近K步都是在后退(不妨假设现在退到了第i级楼梯),那么你可以从当前的第i级楼梯走一步到达第j级楼梯,其中j > i,而且 满足H[j] – H[i] <= 2^K。其中2^K表示2的K次方。
你一开始在第1级楼梯,你至少要走多少才能到达第N级楼梯?如果无法到达第N级楼梯,输出-1。

输入

第一行,一个整数N。2 <= N <= 50。
第二行,N个整数,第i个整数表示第i级楼梯的高度H[i],高度是升序的。
0 <= H[i] <= 1000000000。H[1]一定等于0。

输出

     一行,一个整数。

样例输入

50 1 2 3 6

样例输出

7

数据范围限制

提示

 




































输入样例

输出样例

样例解释

5

0 1 2 3 6

7

往上走3步,后退3步,最后一步到达第N级楼梯

5

0 1 2 4 8

9

往上走2步,后退2步,往上走1步到达高度是4的楼梯,后退3步,最后一步到达第N级楼梯

8

0 2 3 4 5 6 7 8

-1

第1步就没法走了。


7
0 1 2 3 5 10 100

-1



 


15
0 1 2 3 4 7 10 15 50 100 200 300 400 500 1000

36



 


提示:

     对于30%的数据,N <= 10。

题目描述

对于一个正整数X,如果把X化成二进制数后,如果X的二进制数至少有三个连续的1或者至少有3个连续的0(不能有前导0),那么X就是“好数”。例如8就是“好数”,因为8对应的二进制数是1000,有三个连续的0。整数15也是“好数”,因为15对应的二进制数是1111,也有三个连续的1。整数27就不是“好数”,因为27对应的二进制数是11011,既没有连续的三个1也没有连续三个0。

现在给出两个整数Low、UP,求Low和UP范围内有多少个“好数”。

输入

    一行,两个整数Low、UP,其中0 <= Low <= UP <= 2147483647。

输出

    一个整数。

样例输入

样例输出

数据范围限制

提示

 































输入样例

输出样例

样例解释

0 16

5

7、8、14、15、16是好数

17 100

49

 


2000000000 2100000000
100000001

 




2 5

0



 


 

提示:

    对于50%测试,0 <= Low <= UP <= 100000。


2016.9.3

考试思路:
T1
就是个暴力枚举加上判断,两重循环,就可以了。
T2
比赛时没想出方法,就考虑了一个括号,结果也有40分。
T3
深搜,判断三种情况去走,就可以了。
T4
没想到方法,于是弃了。


正确思路:
T1
同上。
T2
就是找到一个左括号,然后记录下这个括号前的数,乘以里面的个数,一次次累加,最后因为在前面计算时会重复,所以找到一个左括号就把里面的个数在答案里减去,就可以了。
T3
同上。
T4
用数位dp。f[i,j,k]表示算到第i位,第i位为j,第i-1位是k的坏数个数,然后就dp,1到low-1,接着就去算好数个数,还有low到up,再去算好数个数,然后算结果就可以了。
0 1
原创粉丝点击