• 2016百度之星资格赛总结


    B题

    /*
    作者:Michaelia
    题目:hdu5686
    给定一个全1序列的长度,可合并任意相邻的两个1从而形成一个新的序列,求所能形成的新序列的数量。
    */
    import java.util.Scanner;
    import java.math.*;
    public class Main {
        static BigInteger[] fib = new BigInteger[201];
        public static void fibo()
        {
            int a = 2;
            int b = 1;
            fib[1] = BigInteger.valueOf(b);
            fib[2] = BigInteger.valueOf(a);
            for (int i = 3; i < 201; i ++)
            {
                fib[i] = fib[i-1].add(fib[i-2]);
            }
            
        }
        public static void main(String[] args)
        {
            fibo();
            Scanner cin = new Scanner (System.in);
            while(cin.hasNext())
            {
                int n = cin.nextInt();
                System.out.println(fib[n]);
            }
            
        }
    }:  
    /*思路
    由于合并后的序列只有0和1两种数字因此可认为与固定的位置无关,保留末尾的1:f[i-1] 合并末两位为2:f[i-2]
    另:斐波那契数列的变化特点
    a:=a+b
    b:=a
    参见:http://qfviolethill.blog.163.com/blog/static/114112168200911131352305/
    */
    

    D题

    /*
    作者:Michaelia
    题目:hdu5688
    一个字符串的字符全排列均认为是同一字符串,求每一个字符串在之前被统计过多少次。
    */
    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <cstring>
    #include <map>
    #include <algorithm>
    using namespace std;
    map<string,int>m;
    int main()
    {
        int N;
        scanf("%d",&N);
        m.clear();
        while(N--)
        {
            char ch[41];
            scanf("%s",ch);
            sort(ch,ch+strlen(ch));
            string s =ch;
            m[s]++;
            printf("%d
    ",m[s]-1);
        }
    }
    /*思路:
    利用map实现每个字符串与其对应次数的映射,注意map使用前要清空
    */
    
  • 相关阅读:
    JS 跨域问题。。
    LInq 中使用正则表达试
    CreateXMl
    DeleteXMl
    SameNameFile 比较两个文件夹是否同名
    UpdateXML
    AddXML
    AsDataView Dataview ,DataTable 跟linq的相互转化
    AttributeToElement
    WoreTime 计算单词出现的次数
  • 原文地址:https://www.cnblogs.com/jenayfighting/p/5503697.html
Copyright © 2020-2023  润新知