总结

题目描述
    给出字符串S和字符串T,现在你要把S的 某一个字符和T的 某一个字符交换,使得交换之后的S至少要有三个连续相同的字符,交换之后的T也要有三个连续相同的字符。问有多少种不同的交换方式。
输入
       第一行,一个字符串S。S只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且S任意两个相邻的字符都不相同。

       第二行,一个字符串T。T只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且T任意两个相邻的字符都不相同。
输出
       一个整数,满足要求的不同交换方式的数量。
样例输入
RGBRBR

BRBGRG

样例输出
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

还原后的字符串是:10347676
33(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。
输出
     一行,一个整数。
样例输入
5

0 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,再去算好数个数,然后算结果就可以了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值