【题解】2015年12月 测试试题
给[学弟们]出了一次测试题,题目比较水,大概在普及难度QAQ。
题目都是以前我做过的,只是简单修改了一下题面,主要目的还是考一下书上知识的运用。
然而 。。。不出意料的是。。。
运筹帷幄
(road.cpp)
【题目描述】
刘邦军行至迷糊林,见其中瘴气围绕,又有青狼猛虎之兽,难于前行。
已知迷糊林是一个共有n个结点的图,点与点之间共有m条道路相连接,每条路有参数t,c,分别表示行走于该路的时间以及兵士损失量。你已知道,刘邦除了脸皮厚什么都不会而且兵力少得可怜,所以需要在刘邦不死(士兵会先死)的情况下尽快走出迷糊林。
刘邦踞鞍而问曰:“子房,如之奈何?”。
【文件格式】
输入文件:第一行两个整数n,m,表示节点数以及边数。
以下m行每行4个整数u,v,c,t,表示u点以及v点之间有一条参数为c,t的边,c为兵士损失量,t为耗费时间。
第m+2行有两个整数s,t,表示起点与终点。
第m+3行有一个整数k,表示刘邦军的兵力。
输出文件:
一个整数表示能走出迷糊林的最短时间,如果不能走出请输出-1。
【样例数据】
Input(road.in)4 51 2 2 31 3 3 51 4 7 102 4 4 63 4 2 61 45Output (road.out)
11
【数据约定】
n<=5000 ,m<=40000 , c,d<=300 , k<=10^9
[Hint]
本题数据随机生成。
【思路】
最短路优化搜索。
链接:http://www.cnblogs.com/lidaxin/p/4911740.html
信息交换
(message.cpp)
【题目描述】
Byteland战火又起,农夫John派他的奶牛潜入敌国获取情报信息。
Cow历尽千辛万苦终于将敌国的编码规则总结如下:
1 编码是由大写字母组成的字符串。
2 设定了密字。加密的过程就是把原信息的字母替换成对应密字。
3 一个字母有且仅有一个对应密字,不同字母对应不同密字。
如今,Cow终于获取了敌国发送的一条加密信息和对应的原信息。Cow如下破解密码:扫描原信息,对于原信息中的字母x,找到它在加密信息中的对应大写字母y,且认为y是x的密字。
Cow的工作停止于以下情况:
1 信息扫描完毕且没有差错
2 扫描完毕但有字母没有在原信息中出现。
3 扫描中出现矛盾或错误,即违反上述的规则。
现在,John发来信息,要求Cow利用破译的密字翻译一条刚刚截获的敌国信息。
【文件格式】
输入文件:
第一行为Cow知道的一条加密信息。
第二行为加密信息的原信息。
第三行为John要求Cow翻译的加密信息。
输出文件:
一行,如果出现2 3 所示的停止情况则输出“Failed”,否则翻译John传送的信息。
【样例数据】
#1
Input
QWERTYUIOPLKJHGFDSAZXCVBN
ABCDEFGHIJKLMNOPQRSTUVWXY
DSLIEWO
Output
Failed
#2
Input
QWERTYUIOPLKJHGFDSAZXCVBNM
ABCDEFGHIJKLMNOPQRSTUVWXYZ
IQHPOQKGHU
Output
HANJIALONG
【思路】
简单模拟
NOIP2009 T1
树上奶牛
(tree.cpp)
【题目描述】
农夫John的奶牛不是住在地上而是住在树上的QWQ。
奶牛之间需要串门,不过在串门之前他们会向John询问距离的大小。可是John的产业有点大奶牛的个数有点多,这让农夫John感到头疼,你能帮助他吗?
Ps:这里提到的树为OI界的[树],即无向无环图。而且因为一棵树的承载量是有限的,所以所有的奶牛可能会分布在不同的树上,即OI界的[森林]。
【文件格式】
输入文件:
第一行两个整数n m,分别表示n个结点m条边。
以下m行,每行三个整数u,v,w,分别表示u,v之间有一条距离为w的树边。
第m+2行一个整数q,表示询问的个数。
以下q行,每行两个整数u,v,表示奶牛要询问u,v之间的距离。
输出文件:
输出q行,每行对应一个询问输出答案。如果u,v不处于同一棵树上,请回答-1。
【样例数据】
Input(tree.in)
5 3
1 3 5393
3 4 2845
4 2 3757
3
1 4
1 2
1 5
Output (tree.out)
8238
11995
-1
【数据约束】
对于30%的数据,n<=1000 , m<=1000 , q<=10000。
对于100%的数据,n<=10000,m<=40000,q<=100000。
[Hint] 对于所有数据皆随机生成。
【思路】
LCA问题。
ps:话说在出题之前我并没有看过 bzoj 1602 =-=
全排列
(long.cpp)
【题目描述】
给定两个1..n的全排列,求两个全排列的最长公共子串。
【文件格式】
输入文件第一行一个整数为n,第二 三行分别有n个数表示两个全排列。
只输出一个整数表示LCP大小。
【样例数据】
Input (long.in)
5
1 3 2 4 5
2 5 1 2 3
Output (long.out)
2
【数据描述】
对于30%的数据: n<=3000
对于100%的数据:n<=100000
【思路】
LCS转LIS+LIS的O(nlogn)算法
链接:http://www.cnblogs.com/lidaxin/p/4897055.html
测试数据和代码戳这儿:http://pan.baidu.com/s/1nuf2I2d
posted on 2016-01-05 17:51 hahalidaxin 阅读(452) 评论(0) 编辑 收藏 举报