zoukankan      html  css  js  c++  java
  • FJUT16级第一周寒假作业题解G题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6

    涨姿势题1

    TimeLimit:1000MS  MemoryLimit:128000KB
    64-bit integer IO format:%lld
    Problem Description
    涨姿势题就是所谓的优化题,在组队赛中,队伍发现了一题水题,那么应该交给谁去处理?作为处理水题的代码手,应该具备什么样的素养?
    1,要快,水题拼的就是速度!
    2,不能卡水题!水题都卡,绝对不是一个代码手的风范!
    3,不能出错,错一次即罚时20分钟,对于水题来讲是致命的!
    4,要能看出来一题是水题!没有这条,上面三条都是没有意义的!

    如果你希望你成团队中一个合格的代码手,那么这套题是你最好的选择,快AC吧!

    本系列即是为了提高水题代码手的素养而准备的!水题经常需要用到简单的优化,中难题的解题过程中也经常需要各种优化,优化是处理超时的首要选择,目的是降低时间复杂度。

    涨姿势题为3题,题面完全相同,仅数据范围不同,请根据不同的数据范围选择合适的算法。

    题目描述:
    给定数列a[1] a[2] ... a[n]
    多次询问
    每次询问 有一个数字 qi
    求有多少组(l,r)满足 f(l,r)=a[l]+a[l+1]+...+a[r]=qi
    Input
    第一行是一个t表示测试数据的组数。

    每组数据的第一行是两个整数n、q,分别表示数组长度和询问的次数
    第二行是n个整数a[1],a[2],...,a[n]。
    接下来是q行,每行一个整数qi表示第i次询问。 

    数据范围:
    第1题:t<=130,1<=n<=1000,-10^9<=ai<=10^9,-10^12<=qi<=10^12,大数据不超过一半,每组大数据的q为1或2。
    第2题:t<=130,1<=n<=10000,q<=50,1<=ai<=10^9,1<=qi<=10^12,大数据不超过一半。
    第3题:t<=30,1<=n<=1000,q<=1000000,-10^6<=ai<=10^6,-10^6<=qi<=10^6,大数据不超过5组。

    注意认真比较每题的每个数的数据范围,然后选择合适的算法AC吧。注意不要提交错题目了。
    Output
    对于每个询问,输出一个整数表示答案
    SampleInput
    1
    5 6
    4 5 6 5 4
    4
    11
    1
    20
    6
    10
    
    SampleOutput
    2
    2
    0
    2
    1
    0

    思路:这题用到很多次区间的和,一个一个加的话会消耗大量时间,所以用前缀和处理,就是用sum[i]代表前i个元素的和。这样每一个区间(i,j)的和都可以用sum[j]-sum[i]来表示。然后用每次询问就直接暴力用两层for遍历一遍所有连续区间判断是否和询问的相等就可以AC了。

    1         sum[0]=0;///前0个元素的和为0
    2         for(i=1;i<=n;i++)///输入n个元素
    3         {
    4             scanf("%lld",&temp);///用temp暂时储存输入的数据
    5             sum[i]=sum[i-1]+temp;///sum[i]每次加上temp
    6         }
    前缀和
    1         int ans=0;
    2         scanf("%lld",&qi);//qi是区间和
    3         for(i=0;i<n;i++)//这里区间是(i,j]
    4             for(j=i+1;j<=n;j++)
    5             if(sum[j]-sum[i]==qi)
    6                 ans++;
    暴力遍历所有区间
  • 相关阅读:
    Interview with BOA
    Java Main Differences between HashMap HashTable and ConcurrentHashMap
    Java Main Differences between Java and C++
    LeetCode 33. Search in Rotated Sorted Array
    LeetCode 154. Find Minimum in Rotated Sorted Array II
    LeetCode 153. Find Minimum in Rotated Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 31. Next Permutation
    LeetCode 60. Permutation Sequence
    LeetCode 216. Combination Sum III
  • 原文地址:https://www.cnblogs.com/xseventh/p/6262285.html
Copyright © 2011-2022 走看看