1.自动打字{Silver1}

【问题描述】

贝西新买了手机,打字不方便,请设计一款应用,帮助她快速发消息。

字典里有W(W<=30000)个小写字母构成的单词,所有单词的字符总数量不超过1,000,000,这些单词是无序的。现在给出N(1 <= N <= 1000)个询问,每个询问i包含一个的字符串s_i(每个字符串最多包含1000个字符)和一个整数K_i,对于所有以s_i为前缀的单词,其中按字典序排序后的第K_i个单词,求该单词在原字典里的序号。

【文件输入】

第一行为两个整数W和N。

接下来2..W+1行,每行一个单词;

接下来W+2..W+N+1行,一个整数和一个字符串,分别表示K_i和s_i。

【文件输出】

输出共N行,每行一个整数,表示位置,如果无解则输出-1。

【输入样例】

10 3

dab

ba

ab

daa

aa

aaa

aab

abc

ac

dadba

4 a

2 da

4 da

【输出样例】

3

1

-1

【样例说明】

以a为前缀的单词有{aa,aaa,aab,ab,abc,ac},第4个是ab,它在原字典中的位置是3,以da为前缀的单词有{daa,dab,dadba},第2个是dab,它在原字典中的位置是1,以da为前缀的第4个单词不存在。

2. 路障{silver2}

【问题描述】

农民约翰的农场n(1 <= N <= 250)个结点,有M(1 <= M <= 25,000)条带权值的有向边,任意两个结点之间最多有一条边相连,任意两个结点之间都有连通的路径。他的家在结点1,谷仓在结点n,他每天都从家选择最短的路径走到谷仓。

牛们开始捣乱,选择在某一条边上放置路障,使得该边的权值变为原来的2倍。求最大能使约翰多走多少路。

【文件输入】

第一行,两个用空格隔开在整数N和M。

接下来M行,每行3个整数,A_j,B_j和L_j,分别表示一条边的两个结点和权值(权值是1...1,000,000的整数)。

【文件输出】

一个整数,表示最大值。

【输入样例】

5 7

2 1 5

1 3 1

3 2 8

3 5 7

3 4 3

2 4 7

4 5 2

【输出样例】

2

【样例说明】

原来的最短路径是1-3-4-5,总长为6,将路障放置3和4之间的边上,使得该边的权值变为6,则最短路径变为1-3-5,总长为8,增加了长度2。

第一题字符串处理 排序

var w,i,j,k,m,n,p:longint;
a:array[..] of string;
num:array[..] of longint;
len:longint;
s:string;
pre:string;
ch:char;
//t:array[0..26,30000] of string;
procedure sort(l,r: longint);
var
i,j: longint;
x,y: string;
z:longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div ];
repeat
while a[i]<x do
inc(i);
while x<a[j] do
dec(j);
if not(i>j) then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
z:=num[i];
num[i]:=num[j];
num[j]:=z;
inc(i);
j:=j-;
end;
until i>j;
if l<j then
sort(l,j);
if i<r then
sort(i,r);
end;
begin
assign(input,'auto.in');
reset(input);
assign(output,'auto.out');
rewrite(output);
readln(N,w);
for i:= to n do
readln(a[i]);
for i:= to n do
num[i]:=i;
sort(,n);
for i:= to w do
begin
readln(k,ch,pre);
//delete(pre,1,1);
for j:= to n do
begin
if a[j][]=pre[] then
begin
s:=copy(a[j+k-],,length(pre));
if s=pre then
begin
writeln(num[j+k-]);
break;
end
else
begin writeln('-1');
break;
end;
end;
end;
end;
close(input);
close(output);
end.

第二题

可以知道改变的边一定是在原最短路径上,不然John就可以按原最短路径走了。

先做一边Dijkstra 记下路径,再枚举路径,做Dijkstra。

var i,j,n,m,s,t,p,min,x,y,k,l:longint;
a:array[..,..]of longint;
d,pre:array[..]of longint;
v:array[..]of boolean;
a1,b1:longint;
ok:boolean;
procedure dijkstra(s:longint);
begin
fillchar(d,sizeof(d),$7f);
fillchar(v,sizeof(v),false);
d[s]:=;
for j:= to n do begin
min:=maxlongint;
for i:= to n do
if (not v[i]) and (d[i]<min) then
begin
p:=i;
min:=d[i];
end;
v[p]:=true;
for i:= to n do
if (not v[i])and(a[p,i]<>)and
(d[p]+a[p,i]<d[i]) then
begin
d[i]:=d[p]+a[p,i];
if not ok then pre[i]:=p;
end;
end;
end; begin
assign(input,'rblock.in');
reset(input);
assign(output,'rblock.out');
rewrite(output);
fillchar(pre,sizeof(pre),);
read(n,m);
for j:= to m do
begin
read(a1,b1,l);
if (l<a[a1,b1]) or (a[a1,b1]=) then begin
a[a1,b1]:=l;
a[b1,a1]:=l;
end;
end;
dijkstra();
ok:=true;
x:=d[n];
k:=n;
repeat
a[k,pre[k]]:=*a[k,pre[k]];
a[pre[k],k]:=a[k,pre[k]];
dijkstra();
if d[n]>y then y:=d[n];
a[k,pre[k]]:=a[k,pre[k]] div ;
a[pre[k],k]:=a[k,pre[k]];
k:=pre[k];
until k=;
writeln(y-x);
close(input);
close(output);
end.

USACO 2014 FEB 银组的更多相关文章

  1. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  2. USACO[19-20]Dec银组题解

    1,MooBuzz 这题其实是道数学题. 我们先找找符合要求的数:1,2,4,7,8,11,13,14…… 我们发现再往后找都是这8个数中的一个加15k如:16……19……29…… 找规律发现k=n/ ...

  3. usaco 2010年3月银组题解

    usaco银组解题报告 一.石子游戏如果把‘O’当作0,‘X’当做1,则N个洞的每一种状态都可以看做是一个N位二进制数.于是,这个问题就变成了求环绕的N位格雷码.幸运的是,这个结构很容易就能够用一个简 ...

  4. BZOJ USACO 银组 水题集锦

    最近刷银组刷得好欢快,好像都是水题,在这里吧他们都记录一下吧(都是水题大家一定是道道都虐的把= =)几道比较神奇的题到时再列出来单独讲一下吧= =(其实我会说是BZOJ蹦了无聊再来写的么 = =) [ ...

  5. USACO翻译:USACO 2014 JAN三题(2)

    USACO 2014 JAN 一.题目概览 中文题目名称 队伍平衡 滑雪录像 滑雪场建设 英文题目名称 bteams recording skicourse 可执行文件名 bteams recordi ...

  6. USACO翻译:USACO 2014 DEC Silver三题

    USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...

  7. USACO翻译:USACO 2012 FEB Silver三题

    USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...

  8. USACO翻译:USACO 2014 JAN三题(1)

    USACO 2014 JAN 一.题目概览 中文题目名称 滑雪场设计 滑雪降速 滑雪场评级 英文题目名称 skidesign slowdown skilevel 可执行文件名 skidesign sl ...

  9. USACO翻译:USACO 2014 MARCH Silver三题

    USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooo ...

随机推荐

  1. Shell入门教程:流程控制(7)break和continue

    第一节:breank命令 4种循环 for.while.until.select,如果想要提早结束循环,可在循环中使用break命令.执行break时,会跳出一层的循环,如果想跳出多层循环,可在bre ...

  2. 如何用angularjs给从后台传来数据添加链接

    <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF- ...

  3. 加速android源码编译

    添加缓存环境变量 : 在 ~/.bashrc 环境变量文件中 添加 export USE_CCACHE=1环境变量, 加速随后的编译过程; 分配缓存磁盘大小 为 ccache 指定磁盘中的一部分大小, ...

  4. 无阻塞加载js,防止因js加载不了影响页面显示

    浏览器加载静态资源和js的方式都是线性加载,所以一般情况可以将js放到</body>前,防止UI线程的阻塞. 而某些时候我们既希望js在整个网页的头部就加载,又担心js阻塞导致网站加载缓慢 ...

  5. 08.03 js _oop

    js 分6个基本类型: string boolean number undefind null   自定义对象 对象的种类: js内置的  ( 比如 string number ) 宿主对象 (比如 ...

  6. c# 创建xml

    <?xml version="1.0" encoding="UTF-8"?> <swUpgrade xmlns="http://ww ...

  7. testng 教程

    Testng 简介: Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation,主要有以下特性: annotations  注释,如 @test ...

  8. .Net中使用无闪刷新控件时提示框不显示

    今天做提示框的时候一直不显示,让我郁闷好久,晚上吃饭的时候问了同事一下,他给了一个思路, 他说可能是因为由于页面中的无闪刷新导致的结果:百度了一下真找到了解决方法 在页面中存在无闪刷新控件的时候提示框 ...

  9. 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件

    问题描述: 用VS2013写好一个程序,在本机上运行一切正常.但是如果直接把exe文件放到另一台机器上用,则会出现: Windows XP:不是一个正常的win32程序 Window 7:缺少msvc ...

  10. 几种服务器端IO模型的简单介绍及实现

    一些概念: 同步和异步 同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪,而异步是指用户进程触发I/O操作以后便开始做自己的事情,而 ...