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

题目链接:点击打开链接

题目大意:给出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(打表,,找规律)

时间: 2024-10-29 19:06:59

hdu5351(2015多校5)--MZL's Border(打表,,找规律)的相关文章

HDU 5347(2015多校5)-MZL&#39;s chemistry(打表)

题目地址HDU 5347 无脑流神题,自行脑补,百度大法好. #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #

HDU 5351 MZL&#39;s Border(java 找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5351 Problem Description As is known to all, MZL is an extraordinarily lovely girl. One day, MZL was playing with her favorite data structure, strings. MZL is really like Fibonacci Sequence, so she defin

HDU 5351——MZL&#39;s Border——————【高精度+找规律】

MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 944    Accepted Submission(s): 306 Problem Description As is known to all, MZL is an extraordinarily lovely girl. One day, MZL was pl

HDU 5344(2015多校5)-MZL&#39;s xor(水题)

题目地址:HDU 5344 题意:求所有(Ai+Aj)的异或值. 思路:可以发现(Ai+Aj)和(Aj+Ai)的异或值为0,所以最后只剩下(Ai+Ai). #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm>

HDU 5349(2015多校5)-MZL&#39;s simple problem(优先队列)

题目地址:HDU 5349 很水的优先队列就能搞好,只不过注意如果2操作结束后的队列为空,那么Max的值为-inf. #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set&

hdu 5351 MZL&#39;s Border 打表+高精度

MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 462    Accepted Submission(s): 127 Problem Description As is known to all, MZL is an extraordinarily lovely girl. One day, MZL was pl

2014 HDU多校弟八场H题 【找规律把】

看了解题报告,发现看不懂 QAQ 比较简单的解释是这样的: 可以先暴力下达标,然后会发现当前数 和 上一个数 的差值是一个 固定值, 而且等于当前数与i(第i个数)的商, 于是没有规律的部分暴力解决,有规律的套公式 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h> #include <iostream> #include <cstring&g

Problem E. Matrix from Arrays(杭电2018年多校第四场+思维+打表找循环节)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6336 题目: 题意:给你一个l个元素的数组a,用题目中的程序构造一个新的矩阵,询问q次,问以(x1,y1)为左上角,(x2,y2)为右下角的矩阵内的元素之和(原点在左上角). 思路:我们通过打表可以发现这个大矩阵都是以左上角2l*2l的小矩阵M循环出现的,所以对于每次查询我们只需统计他要查询的矩阵包含多少个完整的M,对于那些不构成完整的行列和,我们首先用前缀和统计出来,最后加起来即可.我的方法用下图

Nowcoder 北师校赛 B 外挂使用拒绝 ( k次前缀和、矩阵快速幂打表找规律、组合数 )

题目链接 题意 : 中文题.点链接 分析 : 有道题是问你不断求前缀和后的结果 Click here 这道题问的是逆过程 分析方法雷同.可参考 Click here -------------------------------------------------------------------------------- 正着做的矩阵是一个下三角 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 结合杨辉三角可得 C(k, 0) C(k+1, 1)      C(k, 0) C