CY分治解题报告 .pptVIP

  • 3
  • 0
  • 约3.67千字
  • 约 47页
  • 2019-08-10 发布于广东
  • 举报
充分注意数据范围 它能在零时间内加速到最大速度Vi (Vi100) 其他的数据范围都很大,唯独这个数据范围很小,这个矛盾往往是解题的突破口。 在现实问题,也往往存在这样现象,大家应该对此充分重视。 Trade-off 新的数据结构 原来是用车的编号来表达问题。e.g. ViVj, XiXj, … 能否考虑用速度的值来表示问题? num[v]:表示当前车之前速度为v的车有多少辆 如何定义超车: 车辆i能被超过的次数为 算法 int num[100]; int count=0; memset(num,0,sizeof(num)); for (i=0;in;i++) { cinxv; num[v]++; for (k=v+1;k100;k++) { count+=num[k]; } 运算量=O(nk) 2.5*107 编制测试数据 用手工可以检验的小数据,验证程序的正确性 编写程序随机生成大数据,检验程序的执行效率(使用随机函数) 注意检验边界条件。例如,本题中只有1辆车时算法能否得到正确结果。 小结 整个超车的过程实际上就是一个不断交换相邻元素的排序过程。这个排序方法就是冒泡法。因此超车次数就是冒泡法中元素一共要被交换的次数。 通过两种算法的比较,我们可以看出归并排序比冒泡法效率高就是因为归并排序排一次操作可以减少多个逆序对。 如果本题中Vi的规模进一步扩大,你能想出解决的

文档评论(0)

1亿VIP精品文档

相关文档