Contents

ARST打卡第305周

Algorithm

lc2070_每一个查询的最大美丽值

思路:

很显然,这是一个背包dp问题,dp处理选择与不选择的最大美丽值。

因为这里的查询值是离散的,所以可以排序处理,后面再按原数组的位置返回即可。

自己有点忘了实现细节,让claude帮忙写下,自己复习。

吐血,我就说为啥claude一直只选择一个元素,原来原题就是说只选一个元素,审题没审清,尴尬

发现题解是用的 upper_bound - 1 + 直接修改美丽值 做的,所以不按照美丽值降序也行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
impl Solution {
    pub fn maximum_beauty(items: Vec<Vec<i32>>, queries: Vec<i32>) -> Vec<i32> {
        // 创建查询索引,以便后面还原顺序
        let n = queries.len();
        let mut indexed_queries: Vec<(i32, usize)> = queries.into_iter().enumerate().map(|(i, q)| (q, i)).collect();
        indexed_queries.sort_unstable(); // 按查询值排序
        
        // 按价格排序物品,价格相同时按美丽值降序排序
        let mut sorted_items = items;
        sorted_items.sort_unstable_by(|a, b| {
            if a[0] == b[0] {
                b[1].cmp(&a[1]) // 价格相同时,按美丽值降序
            } else {
                a[0].cmp(&b[0])
            }
        });
        
        // 预处理每个价格点的最大美丽值
        let m = sorted_items.len();
        let mut max_beauty = vec![0; m];
        max_beauty[0] = sorted_items[0][1];
        
        for i in 1..m {
            // 对于每个物品,最大美丽值是当前物品的美丽值或之前的最大美丽值
            max_beauty[i] = max_beauty[i-1].max(sorted_items[i][1]);
        }
        
        let mut result = vec![0; n];
        
        // 对于每个查询,二分查找不超过查询价格的最大索引
        for (query, original_idx) in indexed_queries {
            // 二分查找
            match sorted_items.binary_search_by(|item| {
                if item[0] == query {
                    std::cmp::Ordering::Equal
                } else {
                    item[0].cmp(&query)
                }
            }) {
                Ok(idx) => {
                    // 找到精确匹配,使用该位置的最大美丽值
                    result[original_idx] = max_beauty[idx];
                }
                Err(idx) => {
                    if idx > 0 {
                        // 使用小于查询价格的最大美丽值
                        result[original_idx] = max_beauty[idx - 1];
                    }
                }
            }
        }
        
        result
    }
}

Review

停止迎合数字技术,重新重视人类创造力!【TED演讲】

科技应该造福人类,而不是优化取代人类。

Tips

Deep Dive Into SIMD-0228

Share

solana depin深圳2025.3.8记录分享

有报名限额,很多人没报名上,后面现场挤满了人,估计近400多人到场,以至于很多人都是站着的。

i人社恐犯了,先听了2小时的depin的ppt分享。然后突破去开始 networking 大胆社交。

分享交流到的几个比较有意思的观点:

  • 不需要赚无穷无尽的钱,了解自己需要多少钱,然后完成自己的kpi就行了,不用和别人攀比。
  • 很少有人靠做项目做到fire,很多人都是靠交易,如果没有金融知识,可以只炒btc。
  • 钱5年后还是钱,但是skill(编程等)可能5年后不一定有用了,skill也是为了搞钱。
  • 其实 Trump 对币圈的影响没那么大,币圈还是会继续向前,只是目前流动性比较差,总体还是会好起来。
  • 等流动性好起来,才有可能有 ALT coin (btc之外的coin) 的季节。
  • 梭哈不梭哈主要看自己,这别人给不了建议的,并且焦虑情绪也得靠自己调节,留好风险金,然后可以做自己想做的事情。
  • 有个哥们觉得美元11%的债务率太高,会导致股市,货币闪崩一次,因此他只有1wRMB和全Crypto.

感想:

  • 很多朋友都非常精力旺盛,非常热情洋溢
  • 大胆点,没啥好怕的,大家都非常nice
  • 和hk哥们用中文聊,后面让他用英文和我沟通,发现自己英文听力还得持续锻炼
  • 对大佬祛魅,多数大佬都是慷慨谦逊分享的,所以大胆社交,并且努力build自己,将来的自己也能输出观点帮助别人