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

做网站有名的公司深圳创新投资公司官网

做网站有名的公司,深圳创新投资公司官网,太仓公司网站建设电话,开发一款app软件需要多少钱算法学习05#xff1a;离散化、区间合并 文章目录 算法学习05#xff1a;离散化、区间合并前言需要记忆的模版#xff1a;一、离散化1.例题#xff1a;离散化 区间和#xff1a;拓展: 二、区间合并#xff08;贪心#xff09;1.例题#xff1a; 总结 前言 需要记忆的模…算法学习05离散化、区间合并 文章目录 算法学习05离散化、区间合并前言需要记忆的模版一、离散化1.例题离散化 区间和拓展: 二、区间合并贪心1.例题 总结 前言 需要记忆的模版 vectorint alls;//存储所有待离散化的值 sort(alls.begin(), alls.end());//将所有值排序 //去除重复的元素并且不重复的元素 有序 的排在前面 alls.erase(unique(alls.begin(), alls.end()), alls.end()); //找到有序的排在前面的 坐标 所对应的 索引 //返回 坐标 所对应的 映射 int find(int x) {int l 0, r alls.size() - 1;while(l r){int mid (l r) 1;if(alls[mid] x) r mid;else l mid 1;}return r 1;//索引从0开始映射后从1开始 } //区间合并 void merge(vectorPII segs) {vectorPII res;//按照 区间左端点 排序 sort(segs.begin(), segs.end());int st -2e9, ed -2e9;//for(auto seg : segs){if(ed seg.first){//一个区间已经合并完了 if(st ! -2e9) res.push_back({st, ed});st seg.first, ed seg.second;//更新 }else ed max(ed, seg.second());//判断 ed 是否要更新 }//注意无论是那种情况到最后都还剩下一个 区间 没有加入到res中 if(st ! -2e9) res.push_back({st, ed}); segs res; }提示以下是本篇文章正文内容 一、离散化 1.例题离散化 区间和 例题求区间和区间长度无限长无限长的数轴 具体题目假定有一个无限长的数轴数轴上的每个坐标都是0我们首先进行n次操作每次操作将某一位置x上的数加c。 接下来进行m次询问每次询问包含 l 和 r 求区间[lr]间所有数的和。 int main() {cin n m;//插入n次数操作 --------- 先将数据存储起来 for(int i 0; i n; i ){int x, c;cin x c;add.push_back({x, c});alls.push_back(x);//存储所有待 离散化 的值 }//执行m次询问 --------- 先将数据存储起来 for(int i 0; i m; i ){int l, r;cin l r;query.push_back({l, r});alls.push_back(l);//存坐标 alls.push_back(r);//存坐标 }//***关键*** sort(alls.begin(), alls.end());//将所有值排序 alls.erase(unique(alls.begin(), alls.end()), alls.end()); //去除重复的元素并且不重复的元素 有序 的排在前面 //注意现在我们已经将 坐标 离散化了而且 输入的数据 也已经存储好了。//接下来我们就要使用 “前缀和” 来求解 “区间和”//原数组 for(auto item : add){int x find(item.first);a[x] item.second;}//前缀和数组 for(int i 1; i alls.size(); i ) s[i] a[i] s[i - 1];//处理询问for(auto item : query){int l find(query.first()), r find(query.second());cout s[r] - s[l - 1] endl;} return 0;} 拓展: //------ 拓展 ---------//注意 vectorint :: iterator 与 return a.begin() j;//迭代器 与 索引的关系不清楚。 vectorint :: iterator unique(vectorint a){int j 0;for(int i 0; i a.size(); i ) if(!i a[i] ! a[i - 1]) a[j ] a[i];return a.begin() j;} 二、区间合并贪心 1.例题 例题给n个区间合并有交集的区间求最后剩下的区间个数。 具体题目给定n个区间[l i, r i]要求合并所有有交集的区间注意如果在端点出相交也算有交集最后输出合并完成后的区间个数。 #include iostream #include vector #include algorithmusing namespace std;typedef pairint , int PII;const int N 100000 10;int n; vectorPII segs;//存储合并完后的区间void merge(vectorPII segs) {vectorPII res;//按照 区间左端点 排序 sort(segs.begin(), segs.end());int st -2e9, ed -2e9;//for(auto seg : segs){if(ed seg.first){if(st ! -2e9) res.push_back({st, ed});//一个区间已经合并完了 st seg.first, ed seg.second;//更新 }else ed max(ed, seg.second());//判断 ed 是否要更新 }//注意无论是那种情况到最后都还剩下一个 区间 没有加入到res中 if(st ! -2e9) res.push_back({st, ed}); segs res; }int main() {cin n;for(int i 0; i n; i ){int l, r;cin l r;segs.push_back({l, r});}merge(segs);cout segs.size() endl;return 0;} 总结 提示这里对文章进行总结
http://www.w-s-a.com/news/503476/

相关文章:

  • 泰安高级网站建设推广wordpress教程 好看
  • 我自己的网站怎么做关键词优化泰安网站建设dxkjw
  • 平面设计做画册用网站泰州seo平台
  • 申请一个域名后怎么做网站evernote wordpress
  • 网站左侧导航栏设计网站开发后台数据怎么来
  • 临西做网站报价网站建设需要写语句吗
  • 建设网站网站首页购物网站开发代码
  • 淘宝客怎么建立网站网站360优化
  • 安徽建海建设工程有限公司网站网站空间和域名价格
  • 农产品网站建设策划哪里有做枪网站的
  • 更改各网站企业信息怎么做张家港企业网站制作
  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司