zoukankan      html  css  js  c++  java
  • 一模 (3) day2

    第一题:

    题目大意:和day1一样,给出m个小于n的数,求出出现次数大于m div 2 的数。 数据范围加大,1<=n<=2^31   1<=m<=3000000

     

    解题过程:

    1.一开始写了个数组模拟链表 hash,按 mod 指数p 分类,用一个数组记录 每一类的个数,如果每一类个数全部都小于等于一半,那么无解,如果有一个大于一半,那么遍历一边这一类的所有的元素,用一个表保存下来,看每个数出现了多少次。 超时一个点。

    2.输入用getchar 优化后,最大数据0.4s过。

    3.还有一种算法,只要找出第m/2小的数,看它是否和最小的数相同,如果是,输出答案,否则无解。 至于找出第k大,快排或者树状数组或者线段树随意。

     

    第二题:

    题目大意:对一个环求最大连续字串。元素个数N<=1000000

     

    解题过程:

    1.对线性表求最大连续字串 有O(n)算法,一看到这题感觉应该是原来算法的改造。。考虑环比线性表特殊的地方,就是可以头取一段,尾取一段。那么先直接套用线性表的算法做一遍,然后特殊处理头取一段,尾取一段的情况 即可。。 那么用F[i]表示前i个数的最大前缀和,g[i]表示后i个数的最大后缀和。 那么枚举i,求出max(F[i]+g[i+1])即可。一开始由于F[0]和g[n+1]的值没有复制成负无穷大,碰到全部是负数的数据就挂掉了。

    2.还有一种算法更加巧妙:对于头取一段,尾取一段,那么只要求出 最小连续字串,然后用全部数的和减去它就好了。。

     

    第三题:

    题目大意:给出一条线上车站的坐标,车费由两个车站之间的距离决定,求出从车站s到达车站t的最小花费。

     

    解题过程:

    1.裸的图论题,直接写个floyd 就过了。

  • 相关阅读:
    bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】
    bzoj 3196 Tyvj 1730 二逼平衡树【线段树 套 splay】
    bzoj 3528 [Zjoi2014]星系调查【树链剖分+数学】
    bzoj 2127 happiness【最小割+dinic】
    bzoj 3110 [Zjoi2013]K大数查询【树套树||整体二分】
    bzoj 4137 [FJOI2015]火星商店问题【CDQ分治+可持久化trie】
    运用背景橡皮擦抠透明郁金香
    使用快速通道抠荷花
    抠图总结
    花纹的选区
  • 原文地址:https://www.cnblogs.com/vb4896/p/3930291.html
Copyright © 2011-2022 走看看