博客更新记录
2026-08-10
顶部“归档”改成“历史文章”,在首页隐藏旧文章,关闭侧栏普通月份归档卡片
2026-04-24
更新文章:hexo-github个人网站开发
由于换了台设备,把资源文件从github上拉过来,所以博客里面显示所有的文章都在2026-04-24更新了……懒得改了,反正顺序不影响
2026-02-01
更新文章:注意力机制
2026-01-27
更新文章:注意力机制
2026-01-24
上传文章:注意力机制
2026-01-16
上传文章:三蓝一棕:傅里叶变换
2025-12-22
上传文章:关于雅思
2025-04-21
上传文章:2021SCCPC
2025-04-17
更新文章:XCPC模板
2025-03-06
更新头像
2025-02-25
更新文章:hexo+github个人网站开发
2024-12-31
上传文章:2024,更新文章:19thZJCPC
2024-11-22
上传文章:2024CCPC山东邀请赛,更新文章:19thZJCPC
2024-10-25
上传文章:2024ICPC昆明邀请赛
2024-09-18
上传文章:20 ...
注意力机制
Attention in transformers, step-by-step | Deep Learning Chapter 6
How might LLMs store facts | Deep Learning Chapter 7
重要的概念query、key和value。这三个词翻译成中文就是查询、键、值。
可以理解为一种行为:当厨师在锅里准备放下一个调料时,他会看一眼菜谱。书会将他的查询query映射到书中相关的标签key,如辣椒,盐等等,然后书中会展示最匹配的调料value。
Source 和 Target。Source(源)指的是输入。这里是菜谱。Target(目标)指的是输出。这里是锅里正在炒的菜(以及厨师脑子里已经生成的做菜步骤)
Self-Attention与Attention。上述的行为其实是属于 Attention(或者叫 Cross-Attention),而不是 Self-Attention。Attention 是拿着钥匙(Query)去开别人家的锁(Key)。
Self-Attention 是“把家里所有的零件(Q, K, V)摆在地上,看看谁和谁能拼在一起 ...
三蓝一棕:傅里叶变换
记录But what is the Fourier Transform? A visual introduction.的学习。主要是对傅里叶变换的理解:图形上看是旋转
物理上看是重心与频率的关系
数学上看是复平面、欧拉公式和无限积分。
应用上有去噪、图片处理和降噪耳机等。
核心定义:从“时域”到“频域”的翻译傅里叶变换的核心功能是拆解。简单来说,给你一瓶紫色的颜料(叠加后的波形),它能精确地告诉你这瓶紫色是由 40% 的红色、30% 的蓝色和 30% 的白色混合而成的。从音乐的角度理解,交响乐由各种乐器(小提琴、大提琴、长笛)同时演奏,它们的声波叠加在一起。傅里叶变换有绝对音感,能从波形中分辨出里面包含了哪些频率的纯音。
在这张图片中,
时域(上方的黄色波): 告诉我们信号在每一秒钟的强度是多少。
频域(下方的彩色波): 告诉我们信号里包含了哪些频率,以及每个频率的强度(振幅)是多少。
抽象一些的说法就是如果把复杂的波形看作是一个向量,那么那些简单的纯正弦波(彩色波)就是一组坐标轴。傅里叶变换的本质,是计算这个复杂信号在每一个特定频率的“坐标轴”上有多少分量。这就好比把一个颜色(如 ...
关于雅思
这几个月发生了很多事情导致博客好久没更新,主要是一直在被雅思折磨。前几天终于考过了,记录一下我学雅思的过程。
时间线
从原本计划的学两个月之后9月去考一直拖到10月份中旬去考,我选的是机考,考了第一次成绩是5 8.5 6 6:
考试一开始的时候很迷,听力直接考崩了(5.0相当于40到题目错了20多道),因为申请的国家大多都是支持单科重考的,所以后来想着单科重考一次试试,然后考的成绩还是挺意外,居然能上7,最终成绩:
英语高考100多分四级525六级没过,所以这个分数差不多就是我目前的英语极限了,短期内应该不会想着再去刷分了。纯学英语有点折磨希望这是最后一次考试吧。
书本网课/前期准备练习题主要是剑雅全套,当然如果机考可以选择直接在新东方雅思上练,来不及的话可以就做最新的四五套,如果有钱可以买躺着学的SVIP,里面有一个邪修题库,这里面基本都是考试真题的还原题:
不是很建议买,感觉真的是在摸奖,我听力阅读全部刷完都没有遇到过一个(同校有人确实是8月份碰到了一篇阅读),而且吃相是真的难看,之前只要89块一个月就能刷题库现在要好几百,客服说的话也没几句是真的,说什么“剑雅是真题就是误人 ...
2021SCCPC
题面:
24年的好像打完了……从cf上随便找了一个打着玩。
四川的依然还是那么简单,单挑差两题ak(cf上的没有C I J题)。
签到/简单题A题就是求方程x+y=k的解的个数。直接枚举就行。
M题在说有n个旅客在位置0同时出发赶飞机,飞机的位置是x。每个人都是按一定的速度匀速运动。初始时,飞机预定在时刻p0起飞。有m 个广播,第i个广播表示在某个时刻(可能早于p0时刻)告诉所有旅客飞机延误到了pi, 保证ti和pi是递增的。每个旅客在每个时刻都会根据当前自己的位置、当前自己的速度和当前预定的起飞时间来决定行动:如果赶得上飞机就继续移动,否则就原地停留,求总共有多少人可以顺利登机。问最终有多少个旅客赶得上飞机。先预处理姜所有的广播时间和p0比较,如果早于p0就改成p0,然后计算其总共延长的时间,找到最大的延长时间,如果这段时间按该乘客的移动速度可以到达机场就说明这个乘客能登机,遍历一遍就可以统计出有多少人能顺利起飞。这题是简单题里面通过率最低的一个,我感觉还是题目实在是太绕了导致的(我至少读了20min的题面还没理解wa了一次)。怎么会有这么反人类的题目背景 ...
2024CCPC山东邀请赛
题面:
I - Left Shifting签到题,从左往右检查字符串中有没有相邻两个一样的位置,注意有可能一开始就已经是首尾相同的。
12345678void solve() { string s; cin>>s; if(s.front() == s.back()) return cout<<0<<endl,void(); for(int i = 1;i<si(s);++i) if(s[i] == s[i-1]) return cout<<i<<endl,void(); cout<<-1<<endl;}
A - Printer一道很明显的二分题,二分最后的时间,固定时间根据能产生多少的试题来左移或者右移mid,注意直接统计能产生的试题个数的时候可能会爆longlong,可以写int128或者check的时候如果大于k就直接返回true。
12345678910111213141516171819202122 ...
2024HNCPC
题面:
C - easy math给出一个长度为n整数数组a。数组a中的每一个整数$ ai $都是2的幂。求满足$ \prod{i=1}^{n} a_i \leq 2024^b $的最小整数b。
注意到每个数都是2的幂所以可以直接对每个元素取对数让乘法变加法,最后直接用换底公式搞一下2024的b次方把b提出来就行。
123456789101112131415void solve(){ int n; cin>>n; vector<int> a(n); int sum = 0; for(int i = 0;i<n;++i){ cin>>a[i]; a[i] = (int)log2(a[i]); sum += a[i]; } long double base = log(2024),p = log(2); long double logg = p/base; int ans = (ceil)(sum ...
2024ICPC昆明邀请赛
题面:
B - Gold Medal签到题,很显然先分配那些补较少人数就能产生牌子的比赛,那么补全了之后如果还有剩的直接除k向下取整就行。
12345678910111213void solve() { int n,k; cin>>n>>k; vector<int> a(n); int ans = 0; for(int i = 0;i<n;++i) cin>>a[i],ans += a[i] / k,a[i] %= k; int m,p = 0; cin>>m; sort(all(a),greater()); while(p < n && m - (k - a[p]) >= 0) ans++,m -= (k - a[p++]); ans += m / k; cout<<ans<<endl;}
G - Be Positive观察样例可以发现当n == 4 || n == 1的时候归零了。
首先不难看出0,1,2,3;4,5, ...
2024JXCPC
题面:
A - Maliang Learning Painting签到题问你a + b + c等于多少
C - Liar n 个人每人有一个数,分别宣称自己的数为 a1, a2, . . . , an。已知所有人的 数的和为 s,求至多有多少人没撒谎。
显然如果$ \sum a_i == s $那么最优的是每个人都说了真话答案是n,如果不相等那就贪心的认为只有一个人说了谎其他人都没说谎,答案是n-1。
G - Multiples of 5 给出一个 11 进制的数,问这个数是否是 5 的倍数。数的长度比较长,以 二元组 (x, y) 的形式逐个给出,表示接下来有 x 个 y 将要拼接到右侧。
每一位拆开来看,对于长度为n的数可以理解为
$\sum a_i*(11)^{i-1} $
因为任意个11相乘模5等于1,即
$ (11)^{n}\%5 = 1 $即
$ (11)^n\equiv 1\ (mod\ 5) $
所以原式可以化为
$ \sum a_i*(11)^{i-1} \%5=\sum a_i\%5 $
所以求和取模即可
123456789101 ...
2024SXCPC
题面:
F - Try a try, AC is OK 得分就是单次提交所能获得的最高分。
1234567891011void solve(){ int n; cin>>n; int maxx=INT_MIN; for(int i=1;i<=n;++i){ int tmp; cin>>tmp; maxx=max(tmp,maxx); } cout<<maxx<<endl;}
A - chmod模拟即可。
1234567891011121314void solve() { string x, s = "xwr"; cin >> x; for (auto i : x) { int n = i - '0'; string t; t.resize(3); for (int i = 0; i < 3; ++i) ...
