当前位置: 首页 > wzjs >正文

陕西住房建设部网站中国seo

陕西住房建设部网站,中国seo,外包一个企业网站多少钱,建设网站公司前景题目比较复杂,主要体现在流程很长,就是队列加二分的操作 难点1:深拷贝 主要问题1,看下面这段核心代码: int getCount(int destination, int startTime, int endTime) {auto times dest2times[destination];int ans …

题目比较复杂,主要体现在流程很长,就是队列加二分的操作

难点1:深拷贝
主要问题1,看下面这段核心代码:

    int getCount(int destination, int startTime, int endTime) {auto times = dest2times[destination];int ans = 0;auto lower_it = lower_bound(times.begin(), times.end(), startTime);size_t lower_idx = lower_it - times.begin();auto upper_it = upper_bound(times.begin(), times.end(), endTime);size_t upper_idx = upper_it - times.begin();ans = upper_idx - lower_idx;return ans;}

乍一看是 O ( l o g N ) O(logN) O(logN) 的操作,但实际上,第一步取出来的时候,这一步是深拷贝,就已经花费了 O ( N ) O(N) O(N) 的时间,所以,除了size可以深拷贝,在把较大的数据结构取出来时,一定要注意避免类似的操作。

难点2:二分
上述代码,都减去了times.begin(),其实是重复操作,用下面的代码更为简洁

    int getCount(int destination, int startTime, int endTime) {auto it1 = lower_bound(dest2times[destination].begin(), dest2times[destination].end(), startTime);auto it2 = upper_bound(dest2times[destination].begin(), dest2times[destination].end(), endTime);return it2-it1;}

upper_bound:找到第一个大于目标数的位置
lower_bound:找到第一个大于等于目标数的位置
直接用bound的返回值去减,就可以得到元素数目,若是想得到对应的索引,则需要去减begin()
在非强二分考察题目时,用bound是更为省时、简单的操作。

附ac代码

typedef tuple<int, int, int> T;
typedef deque<int> V;
class Router {
set<T> packets;
map<int, V> dest2times;
queue<T> q;
int limit;
public:Router(int memoryLimit) {limit = memoryLimit;}bool addPacket(int source, int destination, int timestamp) {T t1(source, destination, timestamp);if(packets.count(t1))return false;if(q.size() == limit){T t2 = q.front();dest2times[get<1>(t2)].pop_front();packets.erase(t2);q.pop();}dest2times[destination].push_back(timestamp);q.push(t1);packets.insert(t1);return true;}vector<int> forwardPacket() {if(q.size() == 0)return vector<int>{};T t2 = q.front();dest2times[get<1>(t2)].pop_front();packets.erase(t2);q.pop();return vector<int>{get<0>(t2), get<1>(t2), get<2>(t2)};}int findFirst(V& nums, int target){int n = nums.size();int l = 0, r = n-1;while(l<r){int mid = l + (r-l)/2;if(nums[mid] < target)l = mid+1;else r = mid;}return l;}int findLast(V& nums, int target){int n = nums.size();int l = 0, r = n-1;while(l<r){int mid = l + (r-l+1)/2;if(nums[mid] > target)r = mid-1;else l = mid;}return l;}int getCount(int destination, int startTime, int endTime) {int ans = 0;int start = findFirst(dest2times[destination], startTime);int end = findLast(dest2times[destination], endTime);if(dest2times[destination][start] >= startTime and dest2times[destination][end] <= endTime)ans = end-start+1;return ans;}
};/*** Your Router object will be instantiated and called as such:* Router* obj = new Router(memoryLimit);* bool param_1 = obj->addPacket(source,destination,timestamp);* vector<int> param_2 = obj->forwardPacket();* int param_3 = obj->getCount(destination,startTime,endTime);*/
http://www.dtcms.com/wzjs/279888.html

相关文章:

  • 网站开发的软件环境有哪些网站推广策划书模板
  • 香河做网站shijuewang电商推广联盟
  • 招聘网站怎么做介绍苏州首页排名关键词优化
  • 网站建设自己能做吗网站排名分析
  • 开发软件的网站百度免费安装
  • 网站建设如何增加流量自建站平台
  • 个人网站备案麻烦福州百度推广电话
  • 域名注册网站建设百度快速排名提升
  • 建设企业网站服务360推广登陆入口
  • 河北商城网站搭建多少钱湖北百度推广电话
  • 没有网站可以做域名解析吗站长号
  • 外面网站怎么做百度seo排名培训
  • ui设计培训排名磐石网站seo
  • 美食网站开发详细设计绍兴seo公司
  • 科网站建设如何优化关键词的排名
  • 怎样做免费的网站推广深圳优化公司哪家好
  • 我国基层政府网站建设情况东莞关键词优化软件
  • 网站诊断从哪里开始营销推广外包公司
  • 做网站卖赚钱吗安卓系统最好优化软件
  • 网站制作的主要流程百度识图软件
  • 机械网站建设中心seo是什么意思为什么要做seo
  • 建设银行网站理财产品为何不让买百度网址大全旧版安装
  • 用KEGG网站做KEGG富集分析微信指数查询入口
  • 海外 国内网站建设广州seo推广优化
  • 安徽元鼎建设公司网站软文广告经典案例100字
  • 杭州下沙网站建设免费推广平台有哪些
  • 唐山网站建设优化石家庄seo网站管理
  • 个人主题网站设计论文广告公司品牌营销推广
  • 大型网站开发成本北京百度推广官网首页
  • 西宁电商网站建设汽车网络营销推广方案