合肥市第二十四届信息学竞赛复赛题

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:52:59
2 .最大访问值( maxvisit ) : 在一个宴会中一共有 n 位来宾,依照来宾的到达与离去的登记时间,知道第 i 位来宾在 Xi 时到达,在 Yi 时离开,因此第 i 位来宾在宴会场中的时间是 [ xi , Yi] ,亦即 xi 《= t 〈= Yi 中所有可能的 t ,请写一个程序,读入 xi 与 Yi , 1 <= i <= n ,找出同一时刻之内最多会有多少人同时在宴会场中。
输入:第一行是来宾数 n ( n <250000)剩余各行分别是 n 位来宾的到达和离去时间 xi yi <50000
输出:同一时刻访问该宴会的来宾最大值样例:
输入文件: 3
1 4
2 3
1 5
输出文件: 3

2 .字符串编修( stredit ) 已知两个字符串 S 与 t ,如何把字符串 S 经由一连串修改后变成 t 。而且能够使用的操作只有插入一个字符,以及删除一个字符。请写一个程序,接收 S 与 t ,找出如何才能够在最少步骤之下把 S 改成 t ,输出最小步骤。
输入:第一行由源字符串的长度和源字符串组成,第二行由目标字符串的长度和目标字符串组成。
输出:将源字符串变换成目标字符串所用的最小步骤数。样例:
输入文件: 4 abcd
6 aefbhd
输出文件: 4

用pascal,再线等,谢谢!!
对了赏分100,说话算数,谢谢!
已有50,对了再给50。

The first one:

var time:array[0..50000] of longint;
n,x,y,max,now,i:longint;
begin
readln(n);
for i:=1 to n do
begin
readln(x,y);
inc(time[x]);
dec(time[y]);
end;
max:=0;
now:=0;
for i:=0 to 50000 do
begin
inc(now,time[i]);
if now>max then max:=now;
end;
writeln(max);
end.
//================================
第二题:
代码我就不打了,因为太基础了。
就是求当前序列与目标序列的最长公共子序列。
利用动态规划的思想即可。
假设最长公共子序列的长度为l,那么最终答案就是
length(s)+length(t)-2*l;
推荐你一篇文章吧:http://hi.baidu.com/cuifenghui/blog/item/03f1d9c4fca002cb38db497e.html