码迷,mamicode.com
首页 > 其他好文 > 详细

hdu5351(2015多校5)--MZL's Border(打表,,找规律)

时间:2015-08-04 21:06:35      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:点击打开链接

题目大意:给出b1 = ‘b‘ , b2 = ‘a‘ , bi = b(i-1)b(i-2),将i-1和i-2链接起来,记录一个串的s[1~i] 和s[n-i+1~n]相同的话

Border,当i为最长是为LBorder,现在给让求在bn这个串上的前m个字符组成的子串的LBorder

通过计算可以发现,b字符串的前缀都是相同的,所以只要求出m的LBorder就行,和n是无关的,打表找出规律,找出对应不同的m,LBorder的值,因为存在大数,用java写

dp[i]第i层开头的数字大小

dp[1] = 0 ;

dp[2] = 0 ;

dp[i] = dp[i-1] + dp[i-2] + 1;

len[i]第i层的长度

len[i] = dp[i+1] + 1 ;

这是n等于15时的表

技术分享

import java.util.*;
import java.math.* ;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in) ;
        BigInteger dp[] = new BigInteger[1100] ;
        BigInteger len[] = new BigInteger[1100] ;
        BigInteger m , t0 , t1 , Mod , x , y  ;
        t0 = new BigInteger("0") ;
        t1 = new BigInteger("1") ;
        Mod = new BigInteger("258280327") ;
        int t , n , i , j ;
        dp[1] = t0 ;
        dp[2] = t0 ;
        len[0] = t0 ;
        len[1] = t1 ;
        
        for(i = 3 ; i <= 1010 ; i++) {
            dp[i] = t1.add( dp[i-1].add(dp[i-2]) ) ;
            len[i-1] = len[i-2].add( dp[i].add(t1) ) ;
        }
        /*
        System.out.println( Mod );
        for(i = 1 ; i <= 10 ; i++)
            System.out.println( len[i] );
        */
        t = cin.nextInt() ;
        for(i = 0 ; i < t ; i++){
            n = cin.nextInt() ;
            m = cin.nextBigInteger() ;
            for(j = 1 ; j <= 1010 ; j++) {
                int k = m.compareTo(len[j]) ;
                if( k == -1 || k == 0 ) {
                    break ;
                }
            }
            m = m.subtract(len[j-1]) ;
            m = m.add(dp[j]) ;
            m = m.subtract(t1) ;
            m = m.remainder(Mod) ;
            System.out.println( m );
        }
    }
}


Border

版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu5351(2015多校5)--MZL's Border(打表,,找规律)

标签:

原文地址:http://blog.csdn.net/winddreams/article/details/47281573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!