• 打暴力程序的正确做法


    卡时大法!!!!
    例如这道题
    题目描述
    小C得到了一个非常神奇的序列A。这个序列长度为N,下标从1开始。A的一个
    子区间对应一个序列,可以由数对[l,r]表示,代表A[l], A[l + 1], ..., A[r]这段数。
    对于一个序列B[1], B[2], ..., B[k],定义B的中位数如下:

    1. 先对B排序。得到新的序列C。
    2. 假如k是奇数,那么中位数为 。假如k为偶数,中位数为 。
      对于A的所有的子区间,小N可以知道它们对应的中位数。现在小N想
      知道,所有长度>=Len的子区间中,中位数最大可以是多少。
      数据范围: 30%: n <= 200
      60%: n <= 2000
      另外有20%:不超过50个不同的数
      100%:(1<=Len<=n<=10^5, 1 <= a[i] <= 10^9)

    解:
    暴力一看只有30分吧 爆搜卡时也不好
    这时候我们就有一个非常强大的函数 那就是 CLOCK!!! 虽然不能保证程序的正确性但是在不超时以及随机数据的情况下 有较大概率 获得很好的分数
    比如说 这道题!!!
    超级卡时 最后我在oj上交 80pts!!!

    具体用法如下

    	 int st=clock();
    
    	                        if(clock()-st>=999)
    				{
    					cout<<ans<<endl;
    					return 0;
    				}
    
  • 相关阅读:
    Java中的匿名对象
    Java决策制定
    「干货总结」程序员必知必会的十大排序算法
    阿里开发手册之ArrayList正确操作方式
    Java中this关键字的使用
    Java封装的概念详解
    【C++】数组的最大子数组
    第二章:分治I
    【C++】归并排序
    第一章:算法绪论
  • 原文地址:https://www.cnblogs.com/OIEREDSION/p/11826245.html
Copyright © 2020-2023  润新知