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

织梦网站自助申请友链代码全网推广网站

织梦网站自助申请友链代码,全网推广网站,成都代做网站,网站视频背景怎么做解析题目有以下特点: 篮子中只能放置一种水果,可在找到对应篮子后将其置0表示不可再放置水果不能拆分放到两个篮子 解析题目有以下问题: 如何在数组中找到大于目标数量的第一个值的索引 : 暴力解法:直接遍历&#xff0…

解析题目有以下特点:

  1. 篮子中只能放置一种水果,可在找到对应篮子后将其置0表示不可再放置
  2. 水果不能拆分放到两个篮子

解析题目有以下问题:

  1. 如何在数组中找到大于目标数量的第一个值的索引 :
  • 暴力解法:直接遍历,找到值后将该值置为0
  • 分块:查看题解有此解法,将数组划分为n\sqrt{n}n个区间,从左到右依次比较,时间复杂度为O[n∗n]O[n*\sqrt{n}]O[nn] (n为遍历fruits,)
  • 线段树:通过线段树记录区间的最大值,查询线段树。由于没有区间最大值没有顺序,最大时间复杂度为O[n2]O[n^2]O[n2],但通过剪枝在实际运行可降低复杂度。

代码如下:

int Lchild(int root) {return root << 1;
}
int Rchild(int root) {return (root << 1) | 1;
}
// 建立线段树
void Build(int tree[], int baskets[], int root, int l, int r) {if(l == r) {tree[root] = baskets[l-1];return;}int mid = l + ((r - l) >> 1);Build(tree, baskets, Lchild(root), l, mid);Build(tree, baskets, Rchild(root), mid+1, r);tree[root] = tree[Lchild(root)] > tree[Rchild(root)] ? tree[Lchild(root)] : tree[Rchild(root)];return;
}
// 更新线段树
void Update(int tree[], int root, int l, int r, int pos, int value) {if(l == r) {tree[root] = value;return;}int mid = l + ((r - l) >> 1);if(pos <= mid) {Update(tree, Lchild(root), l, mid, pos, value);}else {Update(tree, Rchild(root), mid+1, r, pos, value);}tree[root] = tree[Lchild(root)] > tree[Rchild(root)] ? tree[Lchild(root)] : tree[Rchild(root)];return;
}
// 查询线段树
int Query(int tree[], int root, int l, int r, int fruitNum) {if(l == r) {return tree[root] >= fruitNum ? l-1 : -1;}// 剪枝if(tree[root] < fruitNum) return -1;int mid = l + ((r - l) >> 1);int tmp = Query(tree, Lchild(root), l, mid, fruitNum);if(tmp != -1) return tmp;tmp = Query(tree, Rchild(root), mid+1, r, fruitNum);return tmp;
}int numOfUnplacedFruits(int* fruits, int fruitsSize, int* baskets, int basketsSize) {// 设置线段树的长度为叶子节点这一层为满二叉树时的数量的二倍int n = log(basketsSize)/log(2);if(basketsSize > (1<<n)) n++;n = (1 << n);n = (n << 1);int tree[n+1];memset(tree, 0, sizeof(int)*(n+1));Build(tree, baskets, 1, 1, basketsSize);int res = 0;for(int i=0; i<fruitsSize; i++) {// 返回大于fruits[i]的篮子索引int idex = Query(tree, 1, 1, basketsSize, fruits[i]);if(idex != -1) Update(tree, 1, 1, basketsSize, idex+1, 0);else res++;}return res;
}
http://www.dtcms.com/a/458709.html

相关文章:

  • LockSupport.park 与 Object.wait 的方法的区别?
  • 广东建设信息公开网站中学网站管理系统下载
  • 用rem做移动网站开发微信小程序收费
  • ORB_SLAM2原理及代码解析:Tracking::NeedNewKeyFrame() Tracking::CreateNewKeyFrame()函数
  • 医院网站云服务器配置做网站前两个月应该干什么
  • php网站建设与管理网上商城系统平台官网
  • 江苏山海连云建设有限公司网站长沙seo霸屏
  • 进一步加大网站集约化建设力度微信小程序与wordpress
  • 建立网站 要怎么做wordpress恶意注册
  • 网站建设项目工作分解四川做网站的公司
  • 工信部网站备案号查询如何做deal网站推广
  • 网站改版降权上海公司网站建设
  • jdbc简单封装
  • 永宝网站建设招聘信息芜湖做网站的客户
  • BGP 状态机与报文类型详解
  • 桐庐县住房和城乡建设局网站没有网站可以icp备案
  • 免费推广网站排行榜ui视觉设计常用软件是什么
  • 便捷的大连网站建设专业网站建设官网
  • npm 扩展Vite、Element-plus 、Windcss、Vue Router
  • 程序员和网站建设妇联 网站建设情况
  • 食品网站制作点击图片直接进入网站怎么做
  • 酒店网站建设江苏省和城乡建设门户网站
  • 上海做网站的故事哪家好陕西省建设厅人力资源网站
  • 专业网站设计软件工具wordpress 插件本地化
  • 西宁集团网站建设潍坊网站建设推广公司
  • Echarts饼图示例
  • 力扣刷题——二叉树相同的树
  • 上海奉贤网站建设免费二维码制作生成器
  • 株洲企业网站建设工作网站建设一般预付比例多少
  • 嵌入式 Linux(以泰山派为例)忘记 SSH 密码怎么办?无需重装系统的重置方案