[高精度][二分]JZOJ 1207 遥控车

[高精度][二分]JZOJ 1207 遥控车

Description

平平带着韵韵来到了游乐园,看到了n辆漂亮的遥控车,每辆车上都有一个唯一的名字name[i]。韵韵早就迫不及待地想玩名字是s的遥控车。可是韵韵毕竟还小,她想象的名字可能是一辆车名字的前缀(也就是说能确定一个i,使s是name[i]的前缀),这时她就能玩第i辆车;或者是一个无中生有的名字,即s不是任何一辆车名字的前缀,这时候她什么也不能玩。

你需要完成下面的任务:

1.韵韵想了m个她想要的名字,请告诉她能玩多少次。

2.由于管理员粗心的操作,导致每辆车的摆放位置都可能出现微小的差错,原来第i辆车现在的位置可能是i-1、i、i+1中的任意一个(第1辆车的位置不可能是0,第n辆车的位置不可能是n+1)。请你计算出共有多少种可能的排列。

注:数据保证当s是name[i]的前缀时,i是唯一确定的。一辆车可以玩多次。

 

Input

第一行是2个正整数n、m。

接下来n行,每行1个字符串name[i],表示第i辆车的名字。

接下来m行,每行1个字符串s,表示韵韵想要的名字。

Output

第一行输出韵韵能玩的次数。

第二行输出共有多少种可能的排列。

 

Sample Input

4 4
Abcd
DeF
AAa
aBccc
Ab
AA
AbC
aBcc

Sample Output

3
5

 

Data Constraint

 

 

Hint

【数据规模和约定】

对于题目涉及到的字符串严格区分大小写,且长度小于255。

对于20%的数据 n≤10,m≤10;

对于40%的数据 n≤1000,m≤1000;

对于100%的数据 n≤10000,m≤10000。

分析

关于着前缀,我本想用字典树的

结果MLE。。。无奈,就用了stupid的二分法

然后第二问打波表发现是斐波那契,加高精度即可

 

[高精度][二分]JZOJ 1207 遥控车
[高精度][二分]JZOJ 1207 遥控车

#pragma GCC optimize(2)
#include <iostream> 
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
string s[10001];
int cnt;
int n,m;

bool Bin_Search(string a) {
    int l=1,r=n;
    while (l<=r) {
        int mid=l+r>>1;
        if (s[mid]>a) r=mid-1;
        else l=mid+1;
    }
    return !s[l].find(a,0);
}

int main() {
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) cin>>s[i];
    int ans1=0;
    sort(s+1,s+n+1);
    for (int i=1;i<=m;i++) {
        string a;
        cin>>a;
        ans1+=Bin_Search(a);
    }
    printf("%d\n",ans1);
    int a[10001],b[10001],c[10001];
    memset(a,0,sizeof a);
    memset(b,0,sizeof b);
    memset(c,0,sizeof c);
    a[1]=1;b[1]=2;b[0]=1;
    if (n<=3) printf("%d",n==1?1:(n==2?1:2));
    for (int i=1;i<=n-2;i++) {
        for (int j=1;j<=b[0];j++) {
            c[j]=a[j]+b[j]+c[j];
            c[j+1]=c[j]/10;
            c[j]%=10;
        }
        if (c[b[0]+1]>0) ++b[0];
        for (int j=1;j<=b[0];j++) {
            a[j]=b[j]; b[j]=c[j];c[j]=0;
        }
    }
    for (int i=b[0];i;i--)
        printf("%d",b[i]);
}

View Code

 

转载于:https://www.cnblogs.com/mastervan/p/9699165.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101401.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月13日 下午5:00
下一篇 2021年6月13日 下午6:00


相关推荐

  • 【2025详解】Cherry Studio使用GPT-4o完全指南:图像生成+文档问答+国内加速方案

    【2025详解】Cherry Studio使用GPT-4o完全指南:图像生成+文档问答+国内加速方案

    2026年3月16日
    2
  • mybatis中的动态sql表现为_MybatisPlus

    mybatis中的动态sql表现为_MybatisPlus如何分页查询Mybatis如何分页查询?Mysql中可以使用limit语句,但limit并不是标准SQL中的,如果是其它的数据库,则需要使用其它语句。MyBatis提供了RowBounds类,用于实现分页查询。RowBounds中有两个数字,offset和limit。MyBatis如何利用RowBounds

    2026年2月16日
    7
  • lx文件用什么打开_lservrc文件怎么生成

    lx文件用什么打开_lservrc文件怎么生成介绍两款播放器:第一款:PotPlayer,这款软件快进看学习视频特特别方便。软件的下载地址:链接:http://potplayer.daum.net/?lang=zh_CN第二款:屏幕录像专家

    2022年8月4日
    8
  • plsqldev8.0下载和注册码「建议收藏」

    plsqldev8.0下载和注册码「建议收藏」[b]关键词:PL/SQL,下载,plsqldev,注册码,plsqldev711,汉化文件[/b]PL/SQLDeveloper是一种集成的开发环境,专门用于开发、测试、调试和优化OraclePL/SQL存储程序单元,比如触发器等。PL/SQLDeveloper功能十分全面,大大缩短了程序员的开发周期。[url]http://www.kutoku.info/software…

    2022年4月25日
    41
  • 计算机相关的队名,有创意的队名和口号(精选80个)

    计算机相关的队名,有创意的队名和口号(精选80个)有创意的队名和口号 精选 80 个 齐心协力 争创佳绩 勇夺三军 所向披靡 口号指有宣传鼓动作用的简短文字 给人激励 给人鼓舞 下面是关于有创意的队名和口号 精选 80 个 的内容 欢迎阅读 1 队名 队号 永创第一 口号 披荆斩棘向前冲 永不退缩 力争第一 2 队名 无敌队 冬风吹 战鼓擂 无敌众将会俱谁 3 队名 出单队 口号 我出单 我喜欢 4 队名 队名 风之彩 口号 尽展青春炫彩 5 队名 飞跃

    2025年9月21日
    7
  • 刷新计算机dns缓存的命令,Windows系统刷新DNS缓存命令是什么?Win7系统清除DNS缓存方法…

    刷新计算机dns缓存的命令,Windows系统刷新DNS缓存命令是什么?Win7系统清除DNS缓存方法…连接互联网的计算机会自动缓存网页 以此提高重新打开页面的访问速度 如果 IP 地址变更了 计算机缓存未及时更新 您可能无法打开网页 遇到 未找到页面 的错误 确定您已连接互联网 可尝试刷新 DNS 缓存 高效刷新 DNS 缓存解决网页无法访问 有几个办法很好用 Windows 系统刷新 DNS 缓存命令是什么 如何清理 DNS 缓存 下面装机之家小编分享一下 一 Win7 系统清除 DNS 缓存方法 1 同时按住 Wi

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号