遥控车
来源:互联网 发布:java中位数 编辑:程序博客网 时间:2024/04/19 08:35
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
DataConstraint
Hint
【数据规模】
对于题目涉及到的字符串严格区分大小写,且长度小于255。
对于20%的数据n≤10,m≤10;
对于40%的数据n≤1000,m≤1000;
对于100%的数据n≤10000,m≤10000。
分析:
第一问求前缀为后m个字符串的有多少个(可以重复)。
第二问求fbnc数列。注意第一项是1,第二项是2哦。(要高精)
程序:
<span style="font-size:18px;">type arr=array [1..2,1..2] of ansistring;var a,b:arr; n,m:longint; t:array [1..10000] of string;function gjj(x,y:ansistring):ansistring;var i,j,t,s:longint; z:ansistring; begin i:=length(x); j:=length(y); if i<j then begin z:=x; x:=y; y:=z; i:=i xor j; j:=i xor j; i:=i xor j; end; t:=0; s:=0; z:=''; while (j>0) do begin t:=ord(x[i])+ord(y[j])-48*2+s; if t>=10 then s:=1 else s:=0; t:=t mod 10; z:=chr(t+48)+z; dec(i); dec(j); end; while i>0 do begin t:=ord(x[i])-48+s; if t>=10 then s:=1 else s:=0; t:=t mod 10; z:=chr(t+48)+z; dec(i); end; if s>0 then z:='1'+z; exit(z); end;function gjc(x,y:ansistring):ansistring;var t:Array [1..10000] of longint; i,j:longint; begin gjc:=''; fillchar(t,sizeof(t),0); for i:=length(x) downto 1 do for j:=length(y) downto 1 do begin t[i+j]:=t[i+j]+(ord(x[i])-48)*(ord(y[j])-48); t[i+j-1]:=t[i+j-1]+t[i+j] div 10; t[i+j]:=t[i+j] mod 10; end; i:=1; while (t[i]=0) and (i<10000) do inc(i); for j:=i to length(x)+length(y) do gjc:=gjc+chr(t[j]+48); end;function jzcf(a,b:arr):arr;var c:arr; i,j,k:longint; begin for i:=1 to 2 do for j:=1 to 2 do c[i,j]:='0'; for i:=1 to 2 do for j:=1 to 2 do for k:=1 to 2 do begin c[i,j]:=gjj(c[i,j],gjc(a[i,k],b[k,j])); end; jzcf:=c; end;procedure pover(n:longint); begin if n=1 then exit; pover(n shr 1); a:=jzcf(a,a); if odd(n) then a:=jzcf(a,b); end;procedure fbnc;var i,j,k:longint; c:arr; begin a[1,1]:='0';a[1,2]:='1'; a[2,1]:='1'; a[2,2]:='1'; b:=a; pover(n); writeln(a[2,2]); end;procedure qsort(l,r:longint);var i,j:longint; key,temp:string;begin if l>=r then exit; i:=l;j:=r; key:=t[l+random(r-l+1)];repeat while (t[i]<key) do inc(i); while (t[j]>key) do dec(j); if i<=j then begin temp:=t[i];t[i]:=t[j];t[j]:=temp; inc(i);dec(j); end;until i>j;qsort(l,j);qsort(i,r);end;procedure main; var i,l,r,mid:longint; s:string; ans:longint; f:boolean;beginreadln(n,m);for i:=1 to n do readln(t[i]);qsort(1,n);ans:=0;f:=false;for i:=1 to m do begin readln(s); l:=1; r:=n; while l<=r do begin mid:=(l+r) shr 1; if t[mid]=s then begin f:=true; break; end; if t[mid]<s then l:=mid+1 else r:=mid-1; end; if (copy(t[l],1,length(s))=s) or f then inc(ans); end;writeln(ans);end;begin main; fbnc;end.</span>
- 遥控车
- 遥控车
- android蓝牙遥控车
- 遥控车 (Standard IO)
- 安卓手机蓝牙遥控重力感应遥控车
- 1207. 遥控车 (Standard IO)
- 我要做一辆遥控车!!(设计图)
- 如何转换遥控车进入漂移规格
- jzoj 2546. 【NOIP2011模拟9.3】遥控车
- JZOJ8.12(C组)遥控车
- 【EmbeddedDev】搭建你的BeagleBot遥控车
- BSOI_2262.遥控车 (car.pas/c/cpp)
- 【DIY】远程手机遥控车 androidbot
- 【创客玩】零成本电视遥控车
- 遥控车的主板终于做出来了!!
- 今天,终于做出一辆遥控车来了!!
- 【树莓派+.NET MF打造视频监控智能车】遥控篇
- 基于STM32的安卓蓝牙多功能遥控车
- 这个故事是一对夫妻
- 安装IAR for ARM 4.42a的问题
- pm2
- 加密补漏
- 数据结构实验之二叉树的建立与遍历
- 遥控车
- c/c++ 学习-read 函数和 write 函数
- iOS获取当前的视图控制器
- java编程面试——二分查找
- UVA 10763 Foreign Exchange 交换学生
- GPU 过度绘制总结
- 一年的java之路
- java 在项目根目录创建文件
- java实现导出多sheet的excel小实例