Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这个BT题……

Posted by TN at 2005-08-07 14:25:59
In Reply To:我来贴。(维护数列) Posted by:mostleg at 2005-08-07 14:24:48
> 维护数列
> 【问题描述】
> 请写一个程序,要求维护一个数列,支持以下6种操作:(请注意,格式栏中的下划线‘ _ ’表示实际输入文件中的空格)
> 
> 
>  
> 1. 插入
>  INSERT_posi_tot_c1_c2_..._ctot
>  在当前数列的第posi个数字后插入tot个数字:c1, c2, …, ctot;若在数列首插入,则posi为0
>  
> 2. 删除
>  DELETE_posi_tot
>  从当前数列的第posi个数字开始连续删除tot个数字
>  
> 3. 修改
>  MAKE-SAME_posi_tot_c
>  将当前数列的第posi个数字开始的连续tot个数字统一修改为c
>  
> 4. 翻转
>  REVERSE_posi_tot
>  取出从当前数列的第posi个数字开始的tot个数字,翻转后放入原来的位置
>  
> 5. 求和
>  GET-SUM_posi_tot
>  计算从当前数列开始的第posi个数字开始的tot个数字的和并输出
>  
> 6. 求和最大的子列
>  MAX-SUM
>  求出当前数列中和最大的一段子列,并输出最大和
>  
> 
> 【输入格式】
>  输入文件的第1行包含两个数N和M,N表示初始时数列中数的个数,M表示要进行的操作数目。
> 
> 第2行包含N个数字,描述初始时的数列。
> 
> 以下M行,每行一条命令,格式参见问题描述中的表格。
> 
> 【输出格式】
>  对于输入数据中的GET-SUM和MAX-SUM操作,向输出文件依次打印结果,每个答案(数字)占一行。
> 
> 【输入样例】
> 9 8
> 
> 2 -6 3 5 1 -5 -3 6 3
> 
> GET-SUM 5 4
> 
> MAX-SUM
> 
> INSERT 8 3 -5 7 2
> 
> DELETE 12 1
> 
> MAKE-SAME 3 3 2
> 
> REVERSE 3 6
> 
> GET-SUM 5 4
> 
> MAX-SUM
> 
> 【输出样例】
> -1
> 
> 10
> 
> 1
> 
> 10
> 
> 【样例说明】
> 初始时,我们拥有数列
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  3
>   
>   
>   
>  
> 
>  
> 
> 执行操作GET-SUM 5 4,表示求出数列中从第5个数开始连续4个数字之和,如下图中的灰色部分1+(-5)+(-3)+6 = -1:
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  3
>   
>   
>   
>  
> 
>  
> 
> 执行操作MAX-SUM,表示要求求出当前数列中最大的一段和,即如下图所示,应为3+5+1+(-5)+(-3)+6+3 = 10:
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  3
>   
>   
>   
>  
> 
>  
> 
> 执行操作INSERT 8 3 -5 7 2,即在数列中第8个数字后插入-5 7 2,如下所示的灰色部分:
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  -5
>  7
>  2
>  3
>  
> 
>  
> 
> 执行操作DELETE 12 1,表示删除第12个数字,即最后一个:
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  -5
>  7
>  2
>   
>  
> 
>  
> 
> 执行操作MAKE-SAME 3 3 2,表示从第3个数开始的3个数字,即下图中的灰色部分,统一修改为2:
> 
> 2
>  -6
>  3
>  5
>  1
>  -5
>  -3
>  6
>  -5
>  7
>  2
>   
>  
> 
> 改为
> 
> 2
>  -6
>  2
>  2
>  2
>  -5
>  -3
>  6
>  -5
>  7
>  2
>   
>  
> 
>  
> 
> 执行操作REVERSE 3 6,表示取出数列中从第3个数开始的连续6个数: 
> 
> 
> 如上所示的灰色部分2 2 2 -5 -3 6,翻转后得到6 -3 -5 2 2 2,并放回原来位置:
> 
> 2
>  -6
>  6
>  -3
>  -5
>  2
>  2
>  2
>  -5
>  7
>  2
>   
>  
> 
>  
> 
> 最后执行GET-SUM 5 4和MAX-SUM,不难得到答案1和10。
> 
> 
> 【评分方法】
> 本题设有部分分,对于每一个测试点:
> 
> l        如果你的程序能在输出文件正确的位置上打印GET-SUM操作的答案,你可以得到该测试点60%的分数;
> 
> l        如果你的程序能在输出文件正确的位置上打印MAX-SUM操作的答案,你可以得到该测试点40%的分数;
> 
> l        以上两条的分数可以叠加,即如果你的程序正确输出所有GET-SUM和MAX-SUM操作的答案,你可以得到该测试点100%的分数。
> 
> 请注意:如果你的程序只能正确处理某一种操作,请确定在输出文件正确的位置上打印结果,即必须为另一种操作留下对应的行,否则我们不保证可以正确评分。
> 
> 【数据规模和约定】
> 你可以认为在任何时刻,数列中至少有1个数。
> 
> 输入数据一定是正确的,即指定位置的数在数列中一定存在。
> 
>  
> 
> 50%的数据中,任何时刻数列中最多含有30 000个数;
> 
> 100%的数据中,任何时刻数列中最多含有500 000个数。
> 
>  
> 
> 100%的数据中,任何时刻数列中任何一个数字均在[-1 000, 1 000]内。
> 
> 100%的数据中,M ≤20 000,插入的数字总数不超过4 000 000个,输入文件大小不超过20MBytes。
> 
> 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator