[编程题]山寨金闪闪 (面试题)
链接:https://www.nowcoder.com/questionTerminal/9363dcb83ca44c61a2c1a8f65aa722b8
来源:牛客网
金闪闪死后,红A拿到了王之财宝,里面有n个武器,长度各不相同。红A发现,拿其中三件武器首尾相接,组成一个三角形,进行召唤仪式,就可以召唤出一个山寨金闪闪。(例如,三件武器长度为10、15、20,可以召唤成功。若长度为10、11、30,首尾相接无法组成三角形,召唤失败。)红A于是开了一个金闪闪专卖店。他把王之财宝排成一排,每个客人会随机抽取到一个区间[l,r],客人可以选取区间里的三件武器进行召唤(客人都很聪慧,如果能找出来合适的武器,一定不会放过)。召唤结束后,客人要把武器原样放回去。m个客人光顾以后,红A害怕过多的金闪闪愉悦太多男人,于是找到了你,希望你帮他统计出有多少山寨金闪闪被召唤出来。
输入描述:
第一行武器数量:n <= 1*10^7第二行空格分隔的n个int,表示每件武器的长度。第三行顾客数量:m <= 1*10^6后面m行,每行两个int l,r,表示每个客人被分配到的区间。(l<r)
输出描述:
山寨金闪闪数量。
输入
5 1 10 100 95 101 4 1 3 2 4 2 5 3 5
输出
3题解思路:1,首先,判断三个正整数a,b,c是否能组成三角形,判断方法是:将abc排序(a<=b<=c),然后如果a+b>c,则可以构成三角形。2,其次,判断一个区间[L,R]内是否能找到三个数使其构成三角形,可以将这R-L+1个元素取出并排序,然后从前往后三个三个判断,复杂度是O(len*log(len))。3,查询每次区间长度都在1~1e7之间,当然不能每次都暴力找,不然有1e6次查询,时间复杂度肯定爆炸,那么怎么处理呢?4,实际上,如果数一多,是非常容易构成三角形的,如果要刚好卡到边界,刚好不能构造成三角形(a+b==c),则要构造这样的数据:1,1,2,3,5,8......。对,其实就是斐波那契数列,题目的数据给出的数据在int范围内,然后我们发现大概在40多项的时候就不能构造出全都不满足构成三角形的数据了,下面是打表的出的结果。
所以,只要在给出的区间长度较大的,一定能构成三角形,区间长度较小的,则可以存下来排序后判断,所以本题最后的时间复杂度是O(m*45*log(45))。
#include<bits/stdc++.h>using namespace std;const int MAXN=(int)1e7 + 5;int n,a[MAXN],m;vector<int>v;int main() { while(~scanf("%d",&n)) { for(int i=1; i<=n; i++)scanf("%d",&a[i]); scanf("%d",&m); int cnt=0; while(m--) { int l,r; scanf("%d%d",&l,&r); if(r-l+1>=47)cnt++; else if(r-l+1<3)continue; else { v.clear(); for(int i=l; i<=r; i++)v.push_back(a[i]); sort(v.begin(),v.end()); int len=v.size(); bool flag=0; for(int i=0; i<len-2; i++) { if(v[i]+v[i+1]>v[i+2]) { flag=1; break; } } if(flag)cnt++; } } printf("%d\n",cnt); } return 0;}
转载于:https://www.cnblogs.com/dogenya/p/11184311.html
[编程题]山寨金闪闪 (面试题)相关推荐
- 哔哩哔哩 2019秋招编程题---山寨金闪闪
分析:这是一道关于能否构成三角形的题目 构成三角形的条件:a+b>c(前提a<=b<=c,也就是排序)再加上a>0&&b>0&&c> ...
- java在线编程题_阿里笔试题(2017在线编程题)-- 数串分组 --Java实现
看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...
- 机器人 c语言编程题,机器人机器人小高试题模拟题
"小小科学家"广东省第五届少年儿童科学教育体验活动 小机器人竞赛模拟试题 小学高年级组个人赛 参赛编号 ______ 学校:_________ 班级:_____ 姓 ...
- c语言红酒编程题,葡萄酒基础知识试题解析一
原标题:葡萄酒基础知识试题解析一 单项选择题: 1.下列哪一组完全属于酿造红葡萄酒的品种?(B) A.霞多丽.赤霞珠.梅洛.品丽珠 B.赤霞珠.品丽珠.梅洛.黑比诺 C.雷司令.龙眼.天帕尼洛.桑娇维 ...
- 硬件工程师c语言编程题,硬件工程师考试试题 答案
硬件工程师考试试题 答案 模拟电路 1. 基尔霍夫定理的内容是什么? a. 基尔霍夫电流定律:在电路的任一节点,流入.流出该节点电流的代数和为零. 基尔霍 夫电压定律:在电路中的任一闭合电路,电压的代 ...
- 剑指offer编程题Java实现——面试题3二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 下面是我实现的代码,修 ...
- 哔哩哔哩 2019秋招编程题合集
1/14 [编程题]扭蛋机 #include<bits/stdc++.h> using namespace std; #define line cout << "-- ...
- 哔哩哔哩 2019秋招 山寨金闪闪
原题链接:[编程题]山寨金闪闪 这是某节课前同学给我看的题,只不过他的本意在于令人愉♂悦的金闪闪,我的着眼点在于令人愉♂悦的题目. 就结果而言,这道题也确实让我愉♂悦了一整节运筹学课. 题目大意: 给 ...
- 数据结构面试题编程题_您下次编程面试时应该了解的顶级数据结构
数据结构面试题编程题 by Fahim ul Haq 通过Fahim ul Haq Niklaus Wirth, a Swiss computer scientist, wrote a book in ...
- php编程题试题和答案,比较基础的php面试题及答案-编程题部分
比较基础的php面试题及答案-编程题部分 1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 例如: http://www.sina.com.cn/abc/de/fg.php?id ...
最新文章
- 大数据【四】MapReduce(单词计数;二次排序;计数器;join;分布式缓存)
- 专访@爱可可-爱生活:如何做好科学研究(干货满满)
- react-native 安卓支持 gif动态图
- 推荐.NET CF控件(Resco MobileForms Toolkit)
- C语言DP备忘计算指数N的斐波那契级数的算法(附完整源码)
- latex textbf没有用_LaTeX排版软件札记 Win10 LyX+TeXLive
- Pro*c源程序中使用宿主结构保存查询结果
- 直播 | 循序渐进 - DM8 数据存储管理
- 教你用Java7的Fork/Join框架开发高并发程序
- 如何迁移outlook邮件到另一个硬盘_猎头如何有效的搜寻与筛选简历
- CSS3下的渐变文字效果实现
- c语言会变颜色程序,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
- Makefile编写练习题
- 亮风台AR眼镜震撼发布 HiAR 产品全面升级
- Linux 进程与信号的概念和操作 linux process and signals
- 在任务栏中添加控件 如360小助手、QQ桌面小助手
- day0学习开始,起于markdown
- 森林中的兔子java
- 凌晨四点钟深圳的风景
- 选择排序之简单选择排序
热门文章
- 视频直播画质核心影响因素分析:分辨率、帧率和码率
- 大数据:一张图让你明白什么是大数据
- excel日期改成字符类型_Excel表格中怎么把日期格式转换成文本格式?excel表格自定义格式的日期...
- 【Python笔记】Pandas时区处理
- CSI笔记【12】:阵列信号处理及MATLAB实现(第2版)阅读随笔(四)
- vue富媒体编辑器组件:vue-wangeditor的使用
- vue元素实现动画过渡效果
- 【攻略】淘宝前端智勇大闯关-第一季
- 【JAVA操作系统——可变式分区分配】首次适应算法
- bugly android升级,Android项目引入bugly在线更新