首页 > 试题广场 >

山寨金闪闪

[编程题]山寨金闪闪
  • 热度指数:3717 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
金闪闪死后,红A拿到了王之财宝,里面有n个武器,长度各不相同。红A发现,拿其中三件武器首尾相接,组成一个三角形,进行召唤仪式,就可以召唤出一个山寨金闪闪。(例如,三件武器长度为101520,可以召唤成功。若长度为101130,首尾相接无法组成三角形,召唤失败。)红A于是开了一个金闪闪专卖店。他把王之财宝排成一排,每个客人会随机抽取到一个区间[l,r],客人可以选取区间里的三件武器进行召唤(客人都很聪慧,如果能找出来合适的武器,一定不会放过)。召唤结束后,客人要把武器原样放回去。m个客人光顾以后,红A害怕过多的金闪闪愉悦太多男人,于是找到了你,希望你帮他统计出有多少山寨金闪闪被召唤出来。

数据范围: ,每件武器的长度满足

输入描述:
第一行武器数量:n <= 1*10^7
第二行空格分隔的n个int,表示每件武器的长度。
第三行顾客数量:m <= 1*10^6
后面m行,每行两个int l,r,表示每个客人被分配到的区间。(l

输出描述:
山寨金闪闪数量。
示例1

输入

5
1 10 100 95 101
4
1 3
2 4
2 5
3 5

输出

3
头像 dogenya
发表于 2019-07-28 17:57:23
链接:https://www.nowcoder.com/questionTerminal/9363dcb83ca44c61a2c1a8f65aa722b8 来源:牛客网 金闪闪死后,红A拿到了王之财宝,里面有n个武器,长度各不相同。红A发现,拿其中三件武器首尾相接,组成一个三角形,进行召 展开全文
头像 laglangyue
发表于 2020-06-08 20:38:57
本题对于java程序员不友好开始以为dp能解呢,走不通,就暴力了,超时,然后参考了评论区大佬的C++解法优化了47这个参数,还是不能AC.其实有这样一种特性,就是1--3是真,那么1--N,N>=3都是真。加了一层hashMap优化,然而只过了36% import java.util.Arra 展开全文
头像 牛客573675571号
发表于 2021-09-20 16:20:47
//解题关键:(区间l,r 是武器的下标)//1.算出l,r在什么区间,三角形是一定可以构成的,用三角形a+b == c的临界情况可用Fibonacci数列构造这题的区间,1,1,2,3,5,8,13(区间里能包含的武器长度数量;如区间长度7,只有13种武器长度,如果区间长度47,超过int32种武 展开全文
头像 牛客642313018号
发表于 2024-04-27 12:48:01
判断的时候可以将片段排序,然后依次判断三个连续数是否满足三角形的构成(两小边之和大于最大边)如果每次都达到不符合的边界条件(a+b=c),如果以最小计算,从1,1,2开始,后面会构成斐波那契数列,当达到第48项时超出了int的最大值,所以当一个片段长度大于等于47时,则一定存在可构成三角形的三个数。 展开全文

热门推荐

通过挑战的用户

查看代码
山寨金闪闪