链家在线测评编程题
来源:互联网 发布:淘宝助手上传宝贝教程 编辑:程序博客网 时间:2024/04/29 15:43
我感觉这就是简单的二分查找就行了,因为区间编号是有序了的啊,但是不能直接套二分查找,需要找出每个区间的的范围,然后修改判断条件就行了,代码如下:
// Lianjia01.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <fstream>#include <string>#include <vector>#include <list>#include <stack>#include <map>#include <queue>#include <set>#include <iterator>#include <algorithm>using namespace std;int findk(int * arrS, int * arrE, int low, int high, int key) { if (low > high) return -1; int mid = low + (high - low) / 2; if (key >= arrS[mid] && key <= arrE[mid])return mid+1; else if (key >= arrE[mid])return findk(arrS, arrE, mid + 1, high, key); else return findk(arrS, arrE, low, mid - 1, key);}int main(){ ifstream fin("file.txt"); int n; fin >> n; int * arr = new int[n]; for (int i = 0;i < n;++i)fin >> arr[i]; int * arrS = new int[n]; int * arrE = new int[n]; arrS[0] = 1; arrE[0] = arr[0]; int sum = 0; for (int i = 0;i < n-1;++i) { sum += arr[i]; arrS[i+1] = sum + 1; arrE[i] = sum; } sum += arr[n - 1]; arrE[n - 1] = sum; /*for (int i = 0;i < n;++i) cout << arrS[i] << " " << arrE[i] << endl;*/ int q; fin >> q; int query; for (int i = 0;i < q;++i) { fin >> query; cout << findk(arrS, arrE, 0, n, query) << endl; } return 0;}
阅读全文
0 0
- 链家在线测评编程题
- 2017实习生在线测评编程题
- cvte在线测评题总结
- 2018年春季阿里前端工程师实习岗在线测评编程题总结
- Practice-3 亚马逊在线测评题
- 编程测评
- 阿里在线测评
- 北京大学PKU在线测评系统 3078题 Q
- 搭建程序在线测评系统
- 搜狗的在线测评
- 国内在线测评网站对比?
- 阿里2018测评编程题——小明购物。。。
- 搜狗在线测评(加密解密)
- 中山大学Sicily在线测评系统题目分类
- UVa在线测评很慢怎么办?
- 四款最火在线作业APP深度测评
- 字符串折叠(大视野在线测评)
- 在线编程题
- 除法逆元入门
- Node+express+mogondb+html搭建简单网站
- Qt 5.9.1 参考手册 QtTest 第4章 回放GUI事件
- java 龟兔赛跑观察比赛结果(使用线程)
- CCPC网赛 CaoHaha's staff(找规律+模拟扩展正方形)
- 链家在线测评编程题
- iOS尝试用测试驱动的方法开发一个列表模块【三】
- HDU
- Java IO基础
- Leetcode#9. Palindrome Number(回文数)
- 关于页面跳转的一些总结 浏览器对象与页面刷新 -- JAVA web
- 解决 error C1083: 无法打开预编译头文件xxx.pch: No such file or directory
- 区间价值?hihocoder1483《二分!!+尺取法》
- Unity克隆游戏对象