[高精度][二分]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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • poe交换机连接方式_路由器接交换机怎么设置

    poe交换机连接方式_路由器接交换机怎么设置POE也被称为基于局域网的供电系统或有源以太网,有时也被简称为以太网供电,一个完整的POE系统包括供电端设备和受电端设备两部分。可能会有一些朋友对poe供电有一些疑问,这个在之前也有很多朋友问到过,那么,今天就由飞畅科技的小编来用图文为大家详细介绍下poe的几种供电方式和连接方法,感兴趣的朋友就一起来看看吧!poe交换机的4种连接方式一、交换机和终端都支持PoE这种方法PoE交换机直接通过网线接到支持PoE供电的无线AP和网络摄像机上,这种方…

    2022年10月4日
    0
  • asp.net core 关于自增长ID数据保护(IDOR漏洞)[通俗易懂]

    asp.net core 关于自增长ID数据保护(IDOR漏洞)[通俗易懂]开始前先大概的描述下IDOR漏洞是啥。嗯!举个例子,有一个角色下面有N个用户,拥有这个角色的用户都有自身创建的普通用户操作权限(比如删除)。我们一般情况都是通过表主键来操作这条记录的,那么这么一个功能就涉及到两个接口(查询列表,删除指定用户)。嗯!查询列表的接口自然是要带着用户对应的主键的(通过删除接口传入ID),聪明的人应该想到了;此时ID是明文的并且主键我们一般都是自增长的,此时就会出现我们可以通过猜测这个参数进行恶意删除。嗯!此时有些人可能会想(也是几种解决方式):我可以通过对参数进行加密签名来

    2022年5月1日
    57
  • jenkins教程_1 简介「建议收藏」

    jenkins教程_1 简介「建议收藏」文章内容https://gitee.com/fakerlove/jenkins文章目录1.简介1.1介绍1.2环境准备1.2.1安装jenkins1)离线安装2)docker安装3)访问jenkins1.2.2安装gitlab一、安装及配置1.gitlab镜像拉取2.运行gitlab镜像3.配置4.创建一个项目二、用户使用1.下载git.exe2.登录gitlab网页3.设置ssh4.从gitlab克隆代码5.提交代码到gitlab1.2.3gitlab占用内存太多问题1.简.

    2022年5月15日
    35
  • C语言中volatilekeyword的作用

    C语言中volatilekeyword的作用

    2021年12月2日
    46
  • 小谈Compc命令(命令行生成swc文件)

    小谈Compc命令(命令行生成swc文件)

    2021年8月1日
    44
  • openssl安装教程(windows7系统,超详细)

    openssl安装教程1.安装包安装1.1所需资源链接1.2安装流程1.3测试是否安装成功1.4安装过程中的问题2.自己编译源码再安装1.安装包安装1.1所需资源链接openssl安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html如果用谷歌浏览器打开的话,可以翻译成中文:对应英文如下:根据自己电脑的配置选择需要的版本,我这里选择的第1个Win64OpenSSLv1.1.1iLight。1.2安装流程下载好之后,直接双击即

    2022年4月11日
    2.8K

发表回复

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

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