JZOJ8.12(C组)遥控车
来源:互联网 发布:分区 mysql 编辑:程序博客网 时间:2024/04/29 02:23
题目:
平平带着韵韵来到了游乐园,看到了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 是唯一确定的。一辆车可以玩多次。
分析:
第二问我们可以在纸上演算后,得出是斐波那契数列,但是由于数据大,所以要用高精加。而第一问暴力寻找会超时,所以选用更优的二分查找算法。
附上代码:
const
maxn=10000;
var
n,m,ans,len:longint;
s:array [0..maxn] of string;
s1:string;
a,b,c:array [0..maxn] of longint;
procedure gjj;
var
i,bj:longint;
begin
bj:=0;
fillchar(c,sizeof(c),0);
for i:=1 to len+1 do
begin
c[i]:=c[i]+a[i]+b[i]+bj;
bj:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
if c[len+1]>0 then
inc(len);
for i:=1 to len do
a[i]:=b[i];
for i:=1 to len do
b[i]:=c[i];
end;
procedure qsort(l,r:longint);
var
i,j:longint;
mid,k:string;
begin
i:=l;
j:=r;
mid:=s[(l+r) shr 1];
repeat
while s[i]<mid do
inc(i);
while s[j]>mid do
dec(j);
if i<=j then
begin
k:=s[i];
s[i]:=s[j];
s[j]:=k;
inc(i);
dec(j);
end;
until i>j;
if l<j then
qsort(l,j);
if i<r then
qsort(i,r);
end;
procedure init;
var
i:longint;
begin
readln(n,m);
a[1]:=1;
b[1]:=2;
len:=1;
for i:=1 to n do
readln(s[i]);
for i:=3 to n do
gjj;
end;
function find(s2:string):boolean;
var
l,r,mid:longint;
begin
find:=false;
l:=1;r:=n;mid:=(l+r) shr 1;
while l<=r do
begin
mid:=(l+r) shr 1;
if pos(s2,s[mid])=1 then
exit(true);
if s2<s[mid] then
r:=mid-1
else
l:=mid+1;
end;
end;
procedure main;
var
i,j:longint;
begin
qsort(1,n);
for i:=1 to m do
begin
readln(s1);
if find(s1) then
inc(ans);
end;
writeln(ans);
for i:=len downto 1 do
write(c[i]);
end;
begin
//assign(input,'find.in');reset(input);
//assign(output,'find.out');rewrite(output);
init;
main;
//close(input);close(output);
end.
- JZOJ8.12(C组)遥控车
- JZOJ8.12(C组)跳舞
- JZOJ8.12(C组)作弊的发牌者
- JZOJ8.11(C组)直角三角形
- JZOJ8.15(C组)电话时间
- JZOJ8.15(C组)地铁建设
- JZOJ8.17(C组)位图GZ3076
- JZOJ8.14(C组)射命丸文
- JZOJ8.14(C组)帕秋莉·诺雷姬
- JZOJ8.16(C组)单词分类
- JZOJ8.16(C组)过河问题
- JZOJ8.16(C组)最短路
- JZOJ8.17(C组)外星人入侵
- JZOJ8.18(C组)对撞机
- JZOJ8.11(B组)Hash函数
- JZOJ8.11(C组)【NOIP动态规划专题】采药2 (Standard IO)
- JZOJ8.11(C组)【NOIP2011模拟9.1】方格取数 (Standard IO)
- BSOI_2262.遥控车 (car.pas/c/cpp)
- Linux 系统增加swap分区
- OC基础:XML的解析方式
- ACM-补提交 (ZCMU-1617)
- SPOJ BALNUM (数位DP)
- java项目之——坦克大战09
- JZOJ8.12(C组)遥控车
- 关于this指针的理解
- linux gnome 桌面图标增删
- 观察者模式(Observer),责任链模式,访问者模式(Visitor)
- LAMP搭建环境
- qq音乐windows版本也用了部分chromium库啊
- 基于迅为itop4412开发板的4G模块SIM7100的拨号上网的实现
- [LeetCode]--299.Bulls and Cows
- 第二条建议:遇到多个构造器参数时需要考虑构建器