zoukankan      html  css  js  c++  java
  • 数组那些事儿

    数组惊艳绝伦的操作:

    链接:https://ac.nowcoder.com/acm/contest/12986/G
    问题描述:给定两个数组,a[]和b[]。给定两种操作

    A:删除数组首位元素,所有元素进行前移,末尾添加任意元素。记为一次操作

    B:可以将任意元素进行修改。记为一次操作

    求:最少经过几次操作可以把B变成A。

    解题思路:毫无疑问,能用A操作完成的我们不用B操作,A操作无法获得>1的收益时我们再进行B操作。

    cin >> s;
    a[s] = i;
    for (i = 1; i <= n; i++)
    {
        if (a[s] - b[s] >= 0)
            c[a[s] - b[s]]++;
        if (c[a[s] - b[s] > max])
            max = c[a[s] - b[s]];
    }
    cout << n - max;   //c[]下标次A操作,其余全部B操作
    

      这个数组c[]着实巧妙,下标所记录的是相同数字照应需要向前移动几位。

    取可以照的最多位移动即可。       开始做这题时我真的被反复几次A操作困扰了好久。

    用下标做为输入值,值作为记录下标(或者一些标志)。

    在算法里感觉还是很常见的。尤其问题规模不大时,空间换时间..

  • 相关阅读:
    toj4119HDFS
    hdu2952Counting Sheep
    hdu2393Higher Math
    hdu2317Nasty Hacks
    hdu2309ICPC Score Totalizer Software
    hdu2304Electrical Outlets
    hdu2399GPA
    一、 软件测试概述
    JQuery选择器大全
    如何避免jQuery库和其他库的冲突
  • 原文地址:https://www.cnblogs.com/thx2199/p/14589184.html
Copyright © 2011-2022 走看看