ARTS挑战第八周

Algorithm

复习题—动态规划

  • 509. 斐波那契数 这题思路比较直接,为了复习动态规划,使用迭代法+数组实现,dp[i] = fib(i), dp[i] = dp[i-1]+dp[i-2], base case: dp[0]=0,dp[1]=1;
  • 322. 零钱兑换 这题是完全背包问题,由于需要计算凑成的最少硬币的个数,因此需要先对硬币按照币值从大到小的顺序排序,dp[i][j] 表示只使用前i个硬币,将容量为j的背包装满所需要的最少硬币数。然后使用dp[i][j] = min(dp[i-1][j],dp[i][j-coins[i]]+1),进行状态的转换。base case dp[i][0] = 0, dp[0][i]=inf;表示不可能。使用状态压缩,由于需要访问dp[i][j-coins[i]],因此需要从小到大遍历j

新题——动态规划

  • 494. 目标和 (1)回溯解法:backtrack(nums,i,rest),i表示当前下标,rest表示当前目标值(可以看成是容量) 递归结束条件:i=nums.size(), if rest=0, res++ 做选择 如果是’+'号,则 rest-=nums[i], '-'号则 res+=nums[i] 回溯解法复杂度2^n,很高,可以通过备忘录来加速 (2) 动态规划解法:问题需要转化,假设A组都是+号,B组都是-号,那么sum(A)-sum(B)=target. sum(A)+sum(B)=sum(nums), 从而可得sum(A)=(target+sum(nums))/2. 问题变成了,有多少个子集使得其和为(target+sum(nums))/2。这就是典型的背包问题了. 假设dp[i][j] 表示前i个元素和为j的子集数。那么dp[i][j] = dp[i-1][j] +dp[i-1][j-nums[i]]. base case:dp[i][0]=1,dp[0][j]=0 状态压缩时,j从大到小遍历。注意如果target+sum(nums) 不能被2整除就无解。

Review

modern c++ nullptr、constexpr 即常量

PostgreSQL代价模型

PostgreSQL代价模型包含5个参数:

  1. seq_page_cost ( c s ) (c_s) (cs): 顺序扫描磁盘过程中,读一个page的代价
  2. random_page_cost ( c r ) (c_r) (cr):随机读磁盘过程中个,读一个page的代价
  3. cpu_tuple_cost ( c t ) (c_t) (ct):处理一个tuple的代价
  4. cpu_index_tuple_cost ( c i ) (c_i) (ci):在index scan过程中,处理一个index entry的代价
  5. cpu_operator_cost(c_o):执行一次操作的代价

对于一个算子,它的代价为:
C o = n s ∗ c s + n r ∗ c r + n t ∗ c t + n i ∗ c i + n o ∗ c o C_o = n_s*c_s+n_r*c_r+n_t*c_t+n_i*c_i+n_o*c_o Co=nscs+nrcr+ntct+nici+noco
n s n_s ns:顺序扫描磁盘的page数

n r n_r nr:随机扫描磁盘的page数

n t n_t nt:处理的tuple数量

n i n_i ni:索引扫描过程中index entry的数量

n o n_o no:操作执行的次数

Tips

  1. 缓存雪崩的应对方案:大量数据同时过期: 互斥锁、双key策略、后台更新缓存、均匀过滤时间
    Redis宕机:服务熔断或者限流、主从备份可靠集群
  2. 缓存击穿的应对方案:互斥锁、后台更新缓存
  3. 缓存穿透的应对方案:限制非法请求、缓存空值或默认值、使用bloom filter加速数据端的判断

Share

现代c++新特性——常量

这周太忙了,有点水

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值