2025 牛客寒假算法基础集训营 2 个人题解
A 一起奏响历史之音!签到,判断 a>=1 and a<=6 and a!=4 即可。 B 能去你家蹭口饭吃吗还是签到,答案为 $sorted(a)_{\lfloor{n\over2}\rfloor}-1$。 D 字符串里串正反跑一边,只有当前字母 $s_i$ / $s_{n-i}$ 在后面 / 前面还有出现,答案就可以更新为 $\max(i,ans)$。 F 一起找神秘的数!首先理解$$a+b=2(a\And b)+(a \oplus b)$$$2(a\And b)$ 是只进位二进制加法,$a \oplus b$ 是不进位二进制加法。 将上面公式代入题目,得到$$a|b=a\And b$$显然解只有 $a=b$。答案为 $r-l+1$。 G 一起铸最好的剑!找到距离 $n$ 最小的两个 $m^x$ ,使之更接近的 $x$ 就是答案。 罚时吃满,这题要求一定要启动炉子,答案最小为 1。所以特判 n==1 or m==1 : ans=1 H 一起画很大的圆!外接圆半径$$R={abc...
2025 牛客寒假算法基础集训营 1 个人题解
这场一道 DP 都没有,思维题为主,很神奇。 A 茕茕孑立之影显然最小的大于 $10^9$ 的质数 $1000000007$ 一定是一个合法解,仅在存在 $a_i=1$ 时无解。 如果读到 1 不要直接输出 -1,要先把数据读完。作者被这个坑了 10 分钟。 B 一气贯通之刃图是链,答案是链的头尾,否则无解。 D 双生双宿之决按题意用 map 计数即可,size != 2 都不符合题意,也要输出 -1。 G 井然有序之衡先求和 $a$,如果 $sum \not= {n(n+1) \over2}$,那么无法得到目标排列,否则答案是$$\sum_{i=1}^{n}|a_i-i|$$ H...
逆元的计算 / Python 自带的逆元
简单来说,逆元就是求 ${1\over a}\bmod p$,其中 $\gcd(a,p)=1$。 形式化的说,我们要求同余方程 $ax\equiv1\pmod p$ 的解。 求解这类问题一般有三种方法:扩展欧几里得、费马小定理、线性算法。 费马小定理当 $\gcd(a,p)=1$ 且 $p$ 为质数时,$x=a^{p-2}$。 对于 C++ 而言,快速幂即可。 12345678910111213using ll=long long;ll qpow(ll a,ll b){ ll res=1; while (b){ if (b&1) res=(res*a)%mod; b/=2; a=(a*a)%mod; } return res;}ll inv(ll a){ return qpow(a,mod-2);} 扩展欧几里得12345678910111213using ll=long...
JQDataSDK Python 基金数据查询
维护安装1pip install jqdatasdk 升级1pip install -U jqdatasdk 初始化认证1auth(account,password) 账号即手机号,密码即登陆密码 查询剩余流量1get_query_count() 示例: 12>>> get_query_count(){'total': 1000000,'spare': 1000000} 基金基本信息将标的代码转化成聚宽标准格式12normalize_code(code)normalize_code([code,...]) code 应为 聚宽标准格式。 示例: 1234>>> normalize_code("510880")'510880.XSHG'>>> normalize_code(["510880","513110"])['510880.XSHG',...
跳跃次数查询 根号分治
这是 baozii 佬的废稿,我觉得很有意思所以做个记录,另外这是我第一次接触根号分治这种算法 不在提高组的大纲里我不会,那不是很正常。 题意给定一个长度为 $n$ 的数组 $a_i$($1\le a_i\le n$),然后有 $q$ 个查询。 对于每个查询,给定 $i$ 与 $k$,然后重复执行 $i=i+a_i+k$,直至 $i\gt n$,求执行次数。 $1\le n,q,k\le 10^5$ 题解发现对于暴力算法,当 $a_i$ 与 $k$ 为一个很小的数字时,整体复杂度为 $O(n^2)$($n,q,k$ 同阶),显然超时。 如果我们预处理对于每个 $i,k$ 的答案 $ans_{i,k}$ 呢?首先 $O(n^2)$ 的预处理还是会超时,其次开不出来 $nk=10^{10}$ 的数组。 结合上面两种思想,考虑分治。对于 $k\ge\sqrt{n}$,每次暴力查询的最大复杂度为 $O(\sqrt n)$,这时暴力是可行的,对于 $k \lt \sqrt n$,预处理 $ans_{i,k}$ 的复杂度 $O(n\sqrt k)$ ...
使二进制字符串字符交替的最少反转次数 Leetcode.1888 题解 滑动窗口
Leetcode 的题目一般偏板子,除了难到我的板子题 被板子难到太菜了 我写一下题解。 题意给定一个 01 串 $s$,求通过: 将当前第一项放到末尾。 反转一项。 两种操作让 01 串满足,其任意一项旁边项都与自己相反($010\dots$,$101\dots$)。求操作 2 最小次数。 题解满足条件的 01 串一定是 $A=010\dots$ 或者 $B=101\dots$ 中的一种,只考虑操作 2 的情况下只需要比较 $s$ 与 $A$ 和 $B$ 的差异,最小差异计数就是答案。 因为操作 1 不影响最终结果,所以操作 1 实际上就是允许我们重新选择环的断点。对于偶数长度的 $s$ ,在哪里断都没有区别。而对于奇数长度的 $s$,我们还需要考虑我们操作 2 可能先让 $s$ 中间出现一处 $\dots0110\dots$,再通过重新断点让其变成符合条件的 01 串。 对于不管哪种情况,我们目标 01 串是下面情况的一种: 1 开头,不修改断点 0 开头,不修改断点 1 开头,0 结尾,修改断点 0 开头,1...
Ciallo World
Ciallo World! 2018 年,学的第一门编程语言:Python。 1print("Ciallo World!") 2020 年,学的第二门编程语言:C++。 12345import std;int main(){ std::println("Ciallo World!");} 2025 年,学的第三门编程语言:Go。 1234567package mainimport "fmt"func main() { fmt.Println("Ciallo World!")} 2077 年,学的第 n 门编程语言:Auto C++。 12345auto auto;auto auto(){ auto auto; auto::auto(auto);}
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
