最新要闻
- 全球焦点!魅族20系列价格公布:2999元起、无界顶配8499元!
- 当前头条:Epic要免费送大作《消逝的光芒》增强版了:立省百元!网友:E宝YYDS
- 香蕉、蜂蜜治疗便秘?又骗我好多年
- 当前热议!俄妹COS《生化危机1》吉尔 战斗服难掩好身材
- 热议:流畅、稳定全面进化:魅族Flyme 10正式发布
- 天天资讯:17999元 ROG新款XG Mobile显卡坞上架:175W移动版RTX 4090
- 天天看点:魅族Flyme Auto车机系统正式发布:交互完全不输华为问界
- 世界观点:满血标准版48个月不卡!魅族20发布:2999元起
- 每日观点:3999元起 魅族20 PRO发布:魅族史上最高标准旗舰
- 全球新资讯:李强会见博鳌亚洲论坛理事会成员
- 当前焦点!一款在我国卖不好的手机:真实销量把苹果都拉下马了
- 非洲再现致命性疾病:出现症状24小时内死亡
- 每日看点!魅族20 INFINITY无界版由京东方供屏:采用四边等窄设计
- 最新:元气森林官方发车:0糖0脂气泡水+燃茶多口味饮料混合囤货 2.8元/瓶新低
- 煤油心目中的魅族王者归来 三年回到国内中高端市场TOP5
- 环球快资讯:游戏行业也衰退?EA拟裁员6%减少办公空间
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
关注:01、关于满减优惠券可叠加使用场景下的动态规划算法
01、关于满减优惠券可叠加使用场景下的动态规划算法
之前在一家公司做停车业务,做优惠券相关的内容。有一期需求是关于满减优惠券可叠加使用场景下,为用户推荐最优的优惠券使用方案,特意在网上找了些资料学习,这里做个记录,方便学习。
【资料图】
后面在网上找到了类似的需求,放在了文章的最后,特别感谢原作者。
1、需求简介
需求描述为:支付停车费时,有多张满减优惠券可用(可叠加使用),求最优策略(减免最多)。
准确描述为:
设共有n张优惠券C: [(V1, D1), (V2, D2), (V3, D3), ..., (Vn, Dn)],其中Vn为面值,Dn为减免值(对于一张优惠券Cx,满Vx减Dx),优惠券为单张,可叠加使用(使用过一张后,如果满足面值还可以使用其他优惠券)。求停车费用为M时,使用优惠券的最优策略:1.减免值最多,2.优惠券剩余最优(比如对于 C1 (2, 0.1) 、C2 (1, 0.1) 只能选择一张的最优取舍就是用C1留C2 )。
示例:
输入:
C = [(2, 1.9), (1, 1), (1, 0.1), (2, 0.1)] , M = 3
期望输出:
使用优惠券:[(2, 0.1), (2,1.9), (1,1)]
总减免:3
满减优惠券可叠加使用的场景下的解决方案,可背包算法相似,通过 动态算法规划算法背包问题 学习了下背包的思想。顺便了解一下动态规划能解决什么问题:
适用动态规划方法求解的最优化问题应该具备的两个要素:最优子结构和子问题重叠。——《算法导论》动态规划原理
优惠券问题看起来和背包问题很像,但是有一点不同。
2、优惠券问题和背包问题的不同点
图中,背包问题里面的数据为:在负重已知的前提下能装物品的最优总价值;优惠券问题里面的数据为总金额能使用优惠券的最优总减免值。
对于背包问题,如果负重为4,策略只能是拿B号物品,因为拿取B号之后负重还剩(4-3=1),再拿不了A号物品了(最终价值为1.5);
对于优惠券问题,如果金额为4,使用完B号优惠券之后,金额还剩(4-1.5=2.5),还可以再用A号优惠券的(最终减免值为2.5)。
总结这个不同就是:
- 背包判断大于重量W,再减去W,得到剩余值,根据剩余值再去上一层找剩余值对应的值(统计价值),背包问题是减去重量W;
- 优惠券则是当总金额M大于面额V时,再减去减免值D,得到剩余的金额N,再根据金额N去上一层找对应的值(统计减免值D),优惠券问题是减去减免值D。
而且因为这个不同,优惠券问题的数据对优惠券顺序是有要求的,不像背包问题中,总是负重减物品重量,剩余的重量直接去找上次最优再计算就好了。顺序问题分两种:
3、优惠券的顺序问题
3.1 对于优惠券,不同面额的顺序
优惠券面额顺序对结果的影响
图中,将物品和券的顺序颠倒,对于背包问题,最后一行数据完全相同,对结果无影响;
对于优惠券问题,顺序变了结果会不一样。(因为需要满足优惠券(v,d), 中的v才能减去第二项,所以对顺序有要求)。
所以,不同面额 (V不同) 的优惠券,应该升序排列。
3.2 面额相同,减免值不同
优惠券面额相同,不同减免值的顺序对结果的影响
因为背包思想是通过上一次的结果来铺垫下一次的值,所以从上往下需要先生成同额度的最优值。
所以,同面额不同减免值 (V同D不同) 的优惠券,应该降序排列。
排序示例为:
[ (2, 1.9), (1, 1), (1, 0.1), (2, 0.1)]
需排列为:
[ (1, 1), (1, 0.1), (2, 1.9), (2, 0.1),]
综以上 一点不同两种顺序的情况所述,使用背包之前需要排序(V升D降),按V升序,如果V相同,再按D降序排。再使用背包算法(大于V减去D)。
对于上面的排序要求,我们知道,需要使用具有稳定性的排序算法,下面使用归并排序来进行计算。注意:排序算法一定要具有稳定性,否则无效。
4、程序实现
4.1 具有稳定性的排序算法
def merge(nums: list[int], left: int, mid: int, right: int) -> None: """ 合并左子数组和右子数组 """ # 左子数组区间 [left, mid] # 右子数组区间 [mid + 1, right] # 初始化辅助数组 tmp: list[int] = list(nums[left:right + 1]) # 左子数组的起始索引和结束索引 left_start: int = 0 left_end: int = mid - left # 右子数组的起始索引和结束索引 right_start: int = mid + 1 - left right_end: int = right - left # i, j 分别指向左子数组、右子数组的首元素 i: int = left_start j: int = right_start # 通过覆盖原数组 nums 来合并左子数组和右子数组 for k in range(left, right + 1): # 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++ if i > left_end: nums[k] = tmp[j] j += 1 # 否则,若“右子数组已全部合并完”或“左子数组元素 <= 右子数组元素”,则选取左子数组元素,并且 i++ elif j > right_end or tmp[i] <= tmp[j]: nums[k] = tmp[i] i += 1 # 否则,若“左右子数组都未全部合并完”且“左子数组元素 > 右子数组元素”,则选取右子数组元素,并且 j++ else: nums[k] = tmp[j] j += 1def merge_sort(nums: list[int], left: int, right: int) -> None: """ 归并排序 """ # 终止条件 if left >= right: return # 当子数组长度为 1 时终止递归 # 划分阶段 mid: int = (left + right) // 2 # 计算中点 merge_sort(nums, left, mid) # 递归左子数组 merge_sort(nums, mid + 1, right) # 递归右子数组 # 合并阶段 merge(nums, left, mid, right)""" Driver Code """if __name__ == "__main__": nums: list[int] = [ 7, 3, 2, 6, 0, 1, 5, 4 ] merge_sort(nums, 0, len(nums) - 1) print("归并排序完成后 nums =", nums)
4.2 优惠券叠加算法
# coding:utf-8# 背包算法,解决满减优惠券叠加使用问题def coupon_bags(coupon, amount): """ 优惠券背包算法 param: coupon 优惠券数组 param: amount 金额 """ # 转换金额跨度(间隔): 元->角 span = 10 amount = int(amount*span) for i, v in enumerate(coupon): for j in range(len(v)): coupon[i][j] = int(coupon[i][j]*span) # 初始化结果数组,dps 存储满减值(背包算法结果) # dps_coupons 存储 dps 对应满减值下使用的 优惠券方案 dps = [] dps_coupons = [] # len(coupon)+1,这里为什么要加 1, # 记住 动态算法规划算法背包问题一文中的: dp[i][0] = dq[0][j]=0;原因就是这个 for i in range(len(coupon)+1): # 这里为啥是 amount+1,因为 dps 中的索引是从0开始的, # 索引0的位置处存的是金额0的满减值,所以这里需要 amount+1 dps.append(list((0,)*(amount+1))) # list 直接 * 生成的是同一list,用循环生成 dps_coupons.append([]) for j in range(amount+1): dps_coupons[i].append([]) for i in range(1, len(coupon)+1): # i 代表第 i 张优惠券,从 1 开始的 for j in range(1, amount+1): # j 代表的是 总金额M为:j # coupon[i-1][0] 代表的是优惠券的中的 V,即满 coupon[i-1][0] 减 coupon[i-1][1] if j < coupon[i-1][0]: # 金额j 达不到 满减的条件:V,取上一层对应位置的值 # 获取上个策略值 dps[i][j] = dps[i-1][j] dps_coupons[i][j] = dps_coupons[i-1][j] else: # 金额j 达到了 满减的条件:V # dps中的i代表的是第几张优惠券,j代表的是总金额为J时的最优满减值 # coupon[i - 1][1],代表的是:当前优惠券的减免值 # dps[i - 1][j - coupon[i - 1][1]],代表的是剩余金额对应的最优满减值 if dps[i - 1][j] > coupon[i - 1][1] + dps[i - 1][j - coupon[i - 1][1]]: # 上一行同列数据 优于 当前优惠券+剩余的金额对应的上次数据,取之前数据 dps[i][j] = dps[i-1][j] dps_coupons[i][j] = dps_coupons[i-1][j] else: # 选取当前+剩余 优于 上一行数据 dps[i][j] = dps[i-1][j-coupon[i-1][1]]+coupon[i-1][1] # dps_coupons[i-1][j-coupon[i-1][1]],值是list,需要拷贝,才不会影响之前的结果 dps_coupons[i][j] = dps_coupons[i-1][j-coupon[i-1][1]].copy() # 表示使用了第 i 张优惠券 dps_coupons[i][j].insert(0, list(coupon[i-1])) # 结果需返回数据原单位(元) result_coupons = dps_coupons[-1][-1].copy() for i, v in enumerate(result_coupons): for j in range(len(v)): result_coupons[i][j] = result_coupons[i][j]/span print(f"使用优惠券:{result_coupons} 总减免:{dps[-1][-1]/span}")# 优惠券coupon_items = [ [1, 1], [1, 0.1], [2, 1.9], [2, 0.1],]# 举例中的优惠券是最终顺序。确保优惠券已经排序过,多维升序(V升D降),此处省略coupon_bags(coupon_items, 3)"""coupon_items = [ [1, 0.6], [2, 0.7], [2, 1.3], [3, 2.3],]coupon_bags(coupon_items, 5)"""
dps,dps_coupons数据存储示意图
4.3 停车场优惠券叠加使用的场景
上面就是将上面两种算法结合在一起进行使用。
class CouponSort(object): """ 具有稳定性的归并排序 coupon_list: [[5, 1, 189], [6, 1, 200]] [5, 1, 189] --> 5: 总金额为5,1:减免值,189:此张优惠券对应数据库中的记录ID """ def __init__(self, coupon_list): tmp = coupon_list.copy() self.coupon_list = tmp self.length = len(coupon_list) def sort(self): left = 0 right = self.length self._merge_sort(left, right - 1, True) # 下面是当总金额M相同时,按照减免值降序排序 start, end, index = 0, 0, 0 while index != self.length: if index != self.length - 1: if self.coupon_list[index][0] != self.coupon_list[index + 1][0]: self._merge_sort(start, end, False) start = index + 1 end = start else: end += 1 else: self._merge_sort(start, end, False) index += 1 return self.coupon_list def _merge_sort(self, left, right, l2m): """ 归并排序 """ # 终止条件 if left >= right: return # 当子数组长度为 1 时终止递归 # 划分阶段 mid = (left + right) // 2 # 计算中点 self._merge_sort(left, mid, l2m) # 递归左子数组 self._merge_sort(mid + 1, right, l2m) # 递归右子数组 # 合并阶段 self._merge(left, mid, right, l2m) def _merge(self, left, mid, right, l2m): """ 合并左子数组和右子数组 """ # 左子数组区间 [left, mid] # 右子数组区间 [mid + 1, right] # 初始化辅助数组 tmp = list(self.coupon_list[left:right + 1]) # 左子数组的起始索引和结束索引 left_start = 0 left_end = mid - left # 右子数组的起始索引和结束索引 right_start = mid + 1 - left right_end = right - left # i, j 分别指向左子数组、右子数组的首元素 i = left_start j = right_start # 通过覆盖原数组 nums 来合并左子数组和右子数组 for k in range(left, right + 1): if l2m: i, j = self._little2max(i, j, k, left_end, right_end, tmp) else: i, j = self._max2little(i, j, k, left_end, right_end, tmp) def _little2max(self, i, j, k, left_end, right_end, tmp): # 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++ if i > left_end: self.coupon_list[k] = tmp[j] j += 1 # 否则,若“右子数组已全部合并完”或“左子数组元素 <= 右子数组元素”,则选取左子数组元素,并且 i++ elif j > right_end or tmp[i][0] <= tmp[j][0]: self.coupon_list[k] = tmp[i] i += 1 # 否则,若“左右子数组都未全部合并完”且“左子数组元素 > 右子数组元素”,则选取右子数组元素,并且 j++ else: self.coupon_list[k] = tmp[j] j += 1 return i, j def _max2little(self, i, j, k, left_end, right_end, tmp): # 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++ if i > left_end: self.coupon_list[k] = tmp[j] j += 1 # 否则,若“右子数组已全部合并完”或“左子数组元素 <= 右子数组元素”,则选取左子数组元素,并且 i++ elif j > right_end or tmp[i][1] >= tmp[j][1]: self.coupon_list[k] = tmp[i] i += 1 # 否则,若“左右子数组都未全部合并完”且“左子数组元素 > 右子数组元素”,则选取右子数组元素,并且 j++ else: self.coupon_list[k] = tmp[j] j += 1 return i, jdef _coupon_bags(coupon, amount): """ 优惠券背包算法 param: coupon 优惠券数组 param: amount 金额 """ # 转换金额跨度(间隔): 元->角 span = 10 amount = int(amount*span) for i, v in enumerate(coupon): for j in range(len(v)): coupon[i][j] = int(coupon[i][j]*span) # 初始化结果数组,dps 存储满减值(背包算法结果) # dps_coupons 存储 dps 对应满减值下使用的 优惠券方案 dps = [] dps_coupons = [] # len(coupon)+1,这里为什么要加 1, # 记住 动态算法规划算法背包问题一文中的: dp[i][0] = dq[0][j]=0;原因就是这个 for i in range(len(coupon)+1): # 这里为啥是 amount+1,因为 dps 中的索引是从0开始的, # 索引0的位置处存的是金额0的满减值,所以这里需要 amount+1 dps.append(list((0,)*(amount+1))) # list 直接 * 生成的是同一list,用循环生成 dps_coupons.append([]) for j in range(amount+1): dps_coupons[i].append([]) for i in range(1, len(coupon)+1): # i 代表第 i 张优惠券,从 1 开始的 for j in range(1, amount+1): # j 代表的是 总金额M为:j # coupon[i-1][0] 代表的是优惠券的中的 V,即满 coupon[i-1][0] 减 coupon[i-1][1] if j < coupon[i-1][0]: # 金额j 达不到 满减的条件:V,取上一层对应位置的值 # 获取上个策略值 dps[i][j] = dps[i-1][j] dps_coupons[i][j] = dps_coupons[i-1][j] else: # 金额j 达到了 满减的条件:V # dps中的i代表的是第几张优惠券,j代表的是总金额为J时的最优满减值 # coupon[i - 1][1],代表的是:当前优惠券的减免值 # dps[i - 1][j - coupon[i - 1][1]],代表的是剩余金额对应的最优满减值 if dps[i - 1][j] > coupon[i - 1][1] + dps[i - 1][j - coupon[i - 1][1]]: # 上一行同列数据 优于 当前优惠券+剩余的金额对应的上次数据,取之前数据 dps[i][j] = dps[i-1][j] dps_coupons[i][j] = dps_coupons[i-1][j] else: # 选取当前+剩余 优于 上一行数据 dps[i][j] = dps[i-1][j-coupon[i-1][1]]+coupon[i-1][1] # dps_coupons[i-1][j-coupon[i-1][1]],值是list,需要拷贝,才不会影响之前的结果 dps_coupons[i][j] = dps_coupons[i-1][j-coupon[i-1][1]].copy() # 表示使用了第 i 张优惠券 dps_coupons[i][j].insert(0, list(coupon[i-1])) # 结果需返回数据原单位(元) result_coupons = dps_coupons[-1][-1].copy() for i, v in enumerate(result_coupons): for j in range(len(v)): result_coupons[i][j] = result_coupons[i][j]/span print(f"使用优惠券:{result_coupons} 总减免:{dps[-1][-1]/span}") return result_coupons, dps[-1][-1]/spandef find_max_discount(coupon_list, amount): # 这里应该对 coupon_list 中的元素有要求,即 coupon_list[i][0] >= coupon_list[i][1] # 否则在计算 最优使用方案时会报错,即:dps[i - 1][j - coupon[i - 1][1]], # 要求:j - coupon[i - 1][1] >= 0 cs = CouponSort(coupon_list) sort_coupon = cs.sort() print(sort_coupon) return _coupon_bags(sort_coupon, amount)t = [[10, 1, 12], [20, 10, 43], [20, 15, 12], [24, 14, 1], [5, 4, 4], [66, 40, 15]]find_max_discount(t, 100)
4.4 可优化的点
1、使用一维数组存储结果值。
2、dps 间隔优化(如果优惠券有分,span为100,那数组就很大了)。
对于上面的优化点有机会再去思考
以上就是关于停车场优惠券可叠加使用的解决方案,特此记录下,文中有错误的地方,恳请指出,谢谢。特别感谢下面两位大佬!!!
参考资料:
关于满减优惠券叠加的背包算法
归并排序
关键词:
-
当前视点!Spring AOP官方文档学习笔记(一)之AOP概述
1 AOP简介(1)Spring的关键组件之一就是AOP框架,它是对SpringIoC的补充(这意味着如果我们的IOC容器不...
来源: 关注:01、关于满减优惠券可叠加使用场景下的动态规划算法
当前视点!Spring AOP官方文档学习笔记(一)之AOP概述
全球焦点!魅族20系列价格公布:2999元起、无界顶配8499元!
当前头条:Epic要免费送大作《消逝的光芒》增强版了:立省百元!网友:E宝YYDS
香蕉、蜂蜜治疗便秘?又骗我好多年
当前热议!俄妹COS《生化危机1》吉尔 战斗服难掩好身材
今头条!【kafka】-生产环境问题-报错Maximum application poll interval
热议:流畅、稳定全面进化:魅族Flyme 10正式发布
天天资讯:17999元 ROG新款XG Mobile显卡坞上架:175W移动版RTX 4090
天天看点:魅族Flyme Auto车机系统正式发布:交互完全不输华为问界
世界观点:满血标准版48个月不卡!魅族20发布:2999元起
每日观点:3999元起 魅族20 PRO发布:魅族史上最高标准旗舰
环球热资讯!React Router 备忘清单_开发速查表分享
每日观点:希尔排序
环球微动态丨强网杯2022 GameMaster
环球视讯!128只债券推迟或取消发行
全球新资讯:李强会见博鳌亚洲论坛理事会成员
当前焦点!一款在我国卖不好的手机:真实销量把苹果都拉下马了
非洲再现致命性疾病:出现症状24小时内死亡
每日看点!魅族20 INFINITY无界版由京东方供屏:采用四边等窄设计
最新:元气森林官方发车:0糖0脂气泡水+燃茶多口味饮料混合囤货 2.8元/瓶新低
煤油心目中的魅族王者归来 三年回到国内中高端市场TOP5
环球快资讯:游戏行业也衰退?EA拟裁员6%减少办公空间
环球观焦点:张译《他是谁》豆瓣评分两天再降0.2:刑侦局你给我讲爱情?
一箭四星!中国金牌火箭长二丁火箭又一次成功:31年来超高可靠性
环球热讯:距《你的名字》仅一步之遥:新海诚《铃芽之旅》票房破4亿
山东高速股东户数下降2.82%,户均持股74.45万元
用户吐槽下载视频会员到期不能看 客服:需重新开通会员
天天快资讯:官方认证“全国美食地图”来了:快看看你家乡上榜没
【播资讯】业界首创!台铃发布水冷氢能两轮车:备用氢罐随身带 续航无压力
中科院联合研发技术!小米米家全效空气净化器明天开售:首发3699元
环球速递!苹果WWDC大会定档!iOS 17将至 看看你的iPhone还能不能升
【世界新要闻】NEXON新作TPS《幕后高手》开启不限量最终测试
使用pinctrl和gpio子系统开发GPIO驱动正点原子IMX6ULL阿尔法板的LED灯
Topaz Video AI V3.1.10 视频降噪升画质工具 安装教程(windows/macos版)
热讯:DBSAT脚本快速收集方法
实战SQL优化(以MySQL深分页为例)
世界看热讯:如何限制进程内存:cgroup
时讯:每日机构分析:3月30日
世界播报:空调安装莫任性,城管上门解民忧
博主揭秘成都夜市“鬼秤”套路:10家有8家不准!官方已开展调查
每日讯息!车企回应试驾翻车后 新款坦克500正常上市:33.50万起买高安全硬派越野
索尼PS VR2销量滑铁卢:首周仅有不足30万
天天热文:拒绝山寨卡、翻新卡!NVIDIA联合七彩虹等厂商重拳出击
每日聚焦:CloudQuery 社区版重启 | 我们做了哪些准备?
世界播报:GraphPad Prism 9 V9.5.1 破解版安装教程
世界讯息:python中类成员修饰符
因为一篇文章,这国将召见俄大使
全球最新:改革举措加快推出 “首次”“首单”不断涌现——金融部门努力提升金融服务实体经济能力
【时快讯】抖音发布公告:“剧情演绎”类视频需注明 否则最严无限期封禁
全球热点评!怀念原版《RE4》艾什莉 玩家们绘制老鼠艾什莉同人图
世界简讯:单休女生30小时往返1300公里游6景点:第二天还要上班
速讯:上海交大教授李峰:医生没有创造力 非常容易被AI替代
澳大利亚多地暴雨洪灾 泳池频现剧毒漏斗蜘蛛:最快15分钟致死
当前头条:目标规模超30亿,浙江衢州拟设一支产业基金
天天最资讯丨04735-数据库系统原理知识点
【快播报】【验证码逆向专栏】极验三代、四代点选类验证码逆向分析
Linux 服务器大量的 log 日志,如何正确看日志快速定位错误?你必须学会!
天天最资讯丨APS系统设计经验分享(时间推导 - 2023.03)
每日动态!一个诡异的Python小问题
全球球精选!科创板收盘播报:科创50指数涨0.33% 半导体股延续强势表现
每日消息!男子伪装外卖小哥偷餐 被店员一眼识破:破绽太多
天天微速讯:露营倒闭潮来袭?网友:准备工作繁琐 参加一次就够了
国产本田幼兽来了!本田Cross Cub 110上市:只需1.3万
【焦点热闻】集吸拖洗一体全能!追觅M13 Beta洗地机图赏
汇源生产:哪吒捏爆果汁3.5元/斤大促(商超11元)
当前简讯:遏制“舌尖上的浪费” 餐饮企业应当好“排头兵”
快资讯丨【0基础学爬虫】爬虫基础之网页解析库的使用
世界今日报丨Qt商业级无边框窗口实现源码(windows、msvc)
今日视点:TypeScript 学习笔记 — 类型推断和类型保护(十一)
1个月发了4版驱动 Intel Arc显卡自信起来了:RTX 3060性价比已不能看
当前最新:索尼A7R5更新Ver.2.00固件:四大升级
速读:人工智能大潮下:Meta高管仍坚称元宇宙才是未来
每日快报!库克到访米哈游与大伟哥合影 大赞《原神》及创作团队
全球热讯:马斯克请愿叫停GPT-5!360周鸿祎:不发展才是最大的不安全
前沿资讯!打通为民服务“最后一米”,浦东这个街道积极推进社会治理与公共服务全覆盖
今日热闻!RegEX 备忘清单_开发速查表分享
全球视讯!Python常见面试题014.请说出下面的代码返回结果是什么?
世界今热点:基础篇丨链路追踪(Tracing)其实很简单
天天播报:什么是横向扩展「Scale-out」和纵向扩展「Scale-up」?
焦点信息:易基因: m6A RNA甲基化研究的前期探索性实验思路|干货系列
【环球热闻】全球男性精子量告急:50年来减少62%!2045年人类绝育?
nba2k13怎么空接?nba2k13阵容名单
iu14D2N.tmp是什么意思?iu14D2N.tmp文件详情介绍
华硕f83cr笔记本是哪一年上市的?华硕f83cr笔记本配置
英雄联盟为什么进不去比尔吉沃特?比尔吉沃特服务器在哪个城市?
微信8.0的状态能维持多久?微信8.0更新了什么功能?
支付宝招财宝如何样?招财宝收益高吗?
IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
世界今日讯!min 与 + 运算转换成类似于矩阵乘法的推导过程
【环球时快讯】HDFS Balancer负载均衡器
每日观察!【Visual Leak Detector】配置项 SkipCrtStartupLeaks
世界快消息!掌握这几个算法题.NET初级面试算法不发愁
观热点:《最后生还者》 印象派杰作
焦点快报!vivo X Fold2真机亮相:经典华夏红配色、“天圆地方”设计
全球今头条!女生爬完泰山发现裤子变成偏大码引热议:网友质疑几乎不可能
焦点热议:专家:中国汽车产业进入淘汰赛 将从百家变成十几家
资讯推荐:北京出台新政引导光伏发电高质量发展
天天即时看!火山引擎 DataTester 推出可视化数据集成方案
速读:全网最详细中英文ChatGPT-GPT-4示例文档-个性化角色智能对话从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/c