Educational Codeforces Round 156 (Rated for Div. 2)Educational Codeforces Round 156 (Rated for Div. 2) 个人写题记录 2023-11-20 ACM&算法 #ACM #Codeforces
Codeforces Round 902 (Div. 2, based on COMPFEST 15 - Final Round)A. Goals of Victory大致题意有 $n$ 只队伍,所有队伍两两对战,两个队伍因此得分之和一定为 0。将每个队伍的所有得分之和相加,现在已知其中 $n-1$ 个队伍的得分情况,问最后一个队伍的得分情况是 思路简单题,说白了就是所有人分数之和肯定是 $0$,那就把剩下的人都加起来,取负数就行了 AC code123456789101112131415void solve() { 2023-10-29 ACM&算法 #ACM #Codeforces
Codeforces Round 901 (Div. 2)最近双十一加班严重,难得有一个完整的周末假期,来写点题稍微恢复一下脑子吧 A. Jellyfish and Undertale大致题意有一个炸弹,有倒计时在缓慢减少,你有 $n$ 个道具,每次你可以花费 1s 的时间来使用,使得倒计时增加 $v_i$秒,但是由于一些故障,每次加完后,不能超过上限 $a$,否则就会变成 $a$。问最多可以让炸弹坚持到几秒 思路注意操作可以是任何时候进行的,所以当每次 2023-10-29 ACM&算法 #ACM #Codeforces
Codeforces Round 900 (Div. 3)A. How Much Does Daytona Cost?大致题意给出一个数组和一个数字,问数组内是否存在某个子区间,使得给出的值出现次数最多 思路只有一个值也是子区间,只有它出现也是出现,所以只需要判断是否存在即可 AC code123456789101112131415void solve() { int _; cin >> _; for (int t 2023-10-05 ACM&算法 #ACM #Codeforces
Codeforces Round 899 (Div. 2)A. Increasing Sequence大致题意有一个初始的数组,要求构造另外一个数组,使得新数组严格递增,同时任何一项不与原来的数组的对应项相同,问这个数组最后一个值最小是多少 思路由于严格递增,所以最小的方式就是 $1, 2, 3, 4 \dots$,再考虑一下不能相同的这个情况,容易得到如果按照上述的方式撞上了相同,那么就再加一即可 AC code12345678910111213141 2023-10-04 ACM&算法 #ACM #Codeforces
Educational Codeforces Round#155 (Div. 2)A. Rigged!大致题意有 $n$ 个人,每个人都可以举起最高一定重量的哑铃 $b_i$ 次,而每个人举的哑铃是同一个,最终举起次数最多的人获胜,裁判希望第一个人获胜,问应该陪多少的哑铃,或者不可能 思路简单题,只要没有人既能举起比第一个人更重的同时,能够举起更多次就行,重量很直接选第一个人能举起的上线就行 AC code123456789101112131415161718void solv 2023-10-02 ACM&算法 #ACM #Codeforces
Codeforces Round 898 (Div. 4)A. Short Sort大致题意有三张卡片,分别为 $a, b, c$,已经在桌面上乱序排好,最多交换两张卡片的位置,问是否能够变成有序的 $a, b, c$ 思路简单题,判断一下是不是至少有一位是保持 $a, b, c$ 的顺序即可 AC code123456789101112void solve() { int _; cin >> _; for (in 2023-09-24 ACM&算法 #ACM #Codeforces
CodeTON Round 6 (Div. 2)A. MEXanized Array大致题意构造一个数组,其长度为 $n$,最大值为 $x$,$MEX$ 为 $k$,问这个数组的所有值的和最大是多少 思路简单题,在 $k > x + 1$ 或 $n < k$ 的场景下无解(不可能构造一个 $MEX$ 不可达的数组),然后就随便构造就行了,保证 $MEX$ 之后,剩下所有值取最大就行 AC code123456789101112131 2023-09-23 ACM&算法 #ACM #Codeforces
Codeforces Round 897 (Div. 2)A. green_gold_dog, array and permutation大致题意已知一个数组 $a$,长度为 $n$,需要给出一个 $n$ 的排列 $b$,使得得到的新数组 $c_i = a_i - b_i$ 中不同的值尽可能多,问数组 $b$ 的结果可能是 思路简单来说就是要差值差异大,而且没有取 $abs$,所以可以直接排序一下,一个递增一个递减配对即可 AC code12345678 2023-09-16 ACM&算法 #ACM #Codeforces
Codeforces Round 896 (Div. 2)A. Make It Zero大致题意有一个数组,允许你每次选择一个区间,然后将这个区间内的所有值变成他们异或和的结果,问给出一种最多只进行 8 次的操作的可能方法使得整个数组变成 0 思路不要求最小,只要能就行,简单了很多很多 首先,偶数个相同的值进行异或和,结果为 0,如果整个数组长度为偶数,那么直接异或和两次即可 如果为奇数,那么先把前 $n - 1$ 个异或和一下,最后再异或和两次最后两个 2023-09-16 ACM&算法 #ACM #Codeforces
Codeforces Round 887 (Div. 2)A. Desorting大致题意有一个非递减数列,每次可以选择一个下标 $i$,使得 $\forall i \in [1, i], a_i \rightarrow a_i + 1$,同时 $\forall i \in [i + 1, n], a_i \rightarrow a_i - 1$ 问最少需要几次操作 思路简单题,找到差一点最小的,和 $2$ 做向上取整的除法就行了 AC code1234 2023-09-09 ACM&算法 #ACM #Codeforces
Codeforces Round 895 (Div. 3)A. Two Vessels大致题意有 A,B 两个水池,用大小为 $c$ 的勺子舀,最少需要几次才能让这两个水池相同 思路简单题,每次变化 $2c$,不要求平均数,不然精度不好算 AC code12345678910void solve() { int _; cin >> _; for (int ts = 0; ts < _; ++ts) { 2023-09-09 ACM&算法 #ACM #Codeforces
左值-右值-将亡值最初概念 如何确定一个值是左值还是右值?通常有一个比较简单的判断方案:有地址的值被称为左值,没有地址的值称为右值 但是事实好像并非如此,特别是写了一些相关代码的时候,比如下面的这段 123456789101112131415161718int f(int &a) { return 1;}int f(int &&a) { retur 2023-09-03 杂项 #C++ #右值引用
Educational Codeforces Round#154 (Div. 2)A. Prime Deletion大致题意给一个 9 位数的数字,其中 $1-9$ 恰好各出现一次,允许删除一些位置,并保持原来的顺序不变,然后最终结果需要是一个素数。给出一个可能的素数,要求至少两位数 思路看起来很难的问题,实际上很容易解决。因为至少两位数,且每个数字都有,那么我只要找到几个万能的解不就行了 我选择了 $13$ 和 $31$,只需要观察原数组中 $1, 3$ 的相对位置,选择其中 2023-09-02 ACM&算法 #ACM #Codeforces
Pinely Round 2 (Div. 1 + Div. 2)A. Channel大致题意你是一个频道的频道主,然后发了一条消息,同时你能知道订阅者上下线的消息(不知道具体是谁),上线的人必定看你的消息,问有没有可能所有人都看过你的消息了 思路简单题,统计最大同时在线,和最多多少在线,就可以了 AC code1234567891011121314151617181920void solve() { int _; cin >> 2023-09-01 ACM&算法 #ACM #Codeforces
Harbour.Space Scholarship Contest 2023-2024 (Div. 1 + Div. 2)A. Increasing and Decreasing大致题意给出数列的第一个和最后一个值,构造一个数列,保证 数列严格递增 数列的递增速率严格递减 找出任意一个即可 思路简单题,倒着构造即可,最后判断是否符合 AC code123456789101112131415161718void solve() { int _; cin >> _; for ( 2023-08-27 ACM&算法 #ACM #Codeforces
Codeforces Round 894 (Div. 3)A. Gift Carpet大致题意从字符串矩阵中依次找出四列,满足依次包含 “vika” 四个字符 思路简单题,不过多赘述 AC code1234567891011121314151617181920212223void solve() { int _; cin >> _; for (int ts = 0; ts < _; ++ts) { 2023-08-26 ACM&算法 #ACM #Codeforces
Codeforces Round 888 (Div. 3)A. Escalator Conversations大致题意有一个 $n$ 级台阶,每级 $h$ 高,有 $t$ 个人,问高为 $H$ 的一个人,通过在台阶上的方式,可以和哪些人等高 思路简单题,差值 mod 一下恰好是台阶的倍数,且倍数恰好小于台阶数量,那么就可以了 AC code12345678910111213141516void solve() { int _; ci 2023-08-20 ACM&算法 #ACM #Codeforces
Educational Codeforces Round#153 (Div. 2)A. Not a Substring大致题意需要构建一个只有小括号构成的字符串,既满足括号匹配,同时不存在一个子串等同于给出的一个字符串 思路实际上很简单,只需要取 ()()()() 模式 和 (((()))) 这两种即可,因为这两种模式的唯一相同的子串就只有一对 (),而若需要一个满足括号匹配的字符串,那么必然存在 (),故这两种模式就可以应对所有情况 AC code12345678910111 2023-08-20 ACM&算法 #ACM #Codeforces
Codeforces Round 893 (Div. 2)A. Buttons大致题意有 $1, 2, 3$ 三种按钮,其中 Anna 只能按 $1, 3$ 两种按钮,而 Katie 只能按 $2, 3$ 两种按钮。每个按钮只能按一次。 Anna 和 Katie 玩游戏,两人依次按按钮,Anna 先,直到谁没有按钮可以按,谁就输了,问谁会赢 思路明显大家先抢着把 $3$ 按完就行了,因为 Anna 先开始按,所以为偶数则恰好对半分,为奇数则 Anna 多 2023-08-19 ACM&算法 #ACM #Codeforces
OTPAUTH,两步验证中的通用协议起因昨天突然 GitHub 给我发了一封邮件,要求我必须添加 2FA 的验证 好吧好吧,那就创建吧。但是在创建的过程中,GitHub 问我是否有使用 1Password 之类的软件,如果有的话,可以扫码添加 2FA 嗯???因为我基本上是躺在 Apple 生态里的,所以选择让 Apple 自带的密码管理系统试试看,于是直接扫码了 GitHub 提供的二维码 结果扫码之后果真添加了 2FA 的能力 2023-08-16 杂项 #otpauth #2FA
Codeforces Round 892 (Div. 2)A. United We Stand大致题意有一个数组,你需要把里面的值分成两个数组 $a, b$,保证 $a$ 数组中不存在任何一个值,除 $b$ 数组中的任何一个值后,余数为 0 思路这里强制要求 $a$ 除以 $b$,而且也没有要求数量均分之类的,只要得到任意解就行。那把最大的那个值放到 $b$,剩下的都放到 $a$ 就行了,因为除以一个比你大的值,那么一定没办法除尽的 AC code123 2023-08-13 ACM&算法 #ACM #Codeforces
Codeforces Round 891 (Div. 3)A. Array Coloring大致题意把一个数组里的值分成两组,让这两组的所有元素求和后,奇偶性一致 思路只要判定原数组中奇数的个数就行了,奇数个数的奇数就肯定不行 AC code1234567891011121314void solve() { int _; cin >> _; for (int ts = 0; ts < _; ++ts) 2023-08-12 ACM&算法 #ACM #Codeforces
Codeforces Round 890 (Div. 2)A. Tales of a Sort大致题意有个数列,每次操作可以将所有值减少 $1$,除非它已经是 $0$ 了,问需要多少次操作,才能将整个数列变成非递减数列 思路很明显的一点,如果发现一对不满足条件的相邻对,即 $a_i > a_{i + 1}$,如果不把他们都减少到 $0$ 的情况下,永远无法满足题目条件,故只需要找到不满足的对,然后取最大的那个值即可 AC code123456789 2023-08-12 ACM&算法 #ACM #Codeforces
Educational Codeforces Round#152 (Div. 2)A. Morning Sandwich大致题意有 $a$ 个面包片,$b$ 个奶酪片,$c$ 个火腿片,要保证奶酪片和火腿片必须被两块面包片直接夹,问最多可以造多大的汉堡 思路很简单,就不讲了 AC code12345678910void solve() { int _; cin >> _; for (int tss = 0; tss < _; ++t 2023-08-06 ACM&算法 #ACM #Codeforces
Codeforces Round#889 (Div. 2)退役入职后的首次刷题,确实感觉对题目的敏感度下降了很多 A. Dalton the Teacher题面概要有一个长度为 $n$ 的打乱序列 $a$,每次操作可以将 $a[i]$ 和 $a[j]$ 进行交换位置,问至少多少次操作才能让满足 $\forall i \in [1, n], i \ne a[i]$ 思考因为每次操作会影响到两个位置的值,而本身已经满足条件的可以不用操作,故结果就是 $\le 2023-08-05 ACM&算法 #ACM #Codeforces
Java Script 的 null 和 undefined 随想有些时候感觉一些语言里看起来很蠢的设计,实际上却能解决一些很有意思的场景。比如 JavaScript 的 null 和 undefined,虽然看起来都是表示空的意思,但是实际上却解决了“没有这个值”,“这个值为空”这样两种语义。在缓存穿透的问题上,如果 redis、memcached 等数据库也有这样一层设计等话,是不是就能解决 null 穿透问题了呢 2022-08-30 杂项 #随想 #缓存
记一次 SQL LEFT JOIN 没有得到预期结果的错误最近在业务中做数据开发的时候,写了一个 SQL 但是没有得到预期的结果,大致如下 12345678910表 a+----+------+-----+| id | name | tid |+----+------+-----+| 1 | aaa | 101 |+----+------+-----+| 2 | bbb | 102 |+----+------+-----+| 3 | ccc 2022-05-29 杂项 #SQL
Codeforces Round#789(Div. 2)B2. Tokitsukaze and Good 01-String (hard version)大致题意有一段 01 组成的字符串,保证长度为偶数 你可以选择一个 0 或者 1,将其变为 1 或者 0 问至少需要操作几次,可以使得所有的 0 或者 1 段都为偶数长度。同时,此时,最少有多少段单独段 0 或 1 段 分析首先,因为总长度为偶数,所以奇数段一定是成对出现的,可以简单讨论五种情况 改 2022-05-28 ACM&算法 #ACM #Codeforces
GCC/G++ 预编译头性能优化最近一直在搞 OJ,为了一个高效的、安全的沙盒编译环境操碎了心,终于实现了一个安全的且对运行影响非常低的沙盒,但是发现程序的编译效率非常的低。 最后通过查阅各种的博客,终于发现了一个非常高效的解决方案 万能头文件问题在 OJ 的任务中,很多 ACMer 为了方便起见,经常使用万能头文件 bits/stdc++.h。 当然这个头文件之前也惹过一次麻烦,就是著名的银川线上赛的 5 元学生机 OJ 事件 2022-04-30 杂项 #GCC/G++ #性能优化
使用 Junit5 和 Mockito 实现 SpringBoot 的单元测试最优美的解决方案什么是单元测试单元测试就是一部分代码,但是它 不会在正常的业务流程中被执行 不被打包进入最终的编译程序 不会被任何其他业务代码以任何方式导入 不会影响正常的代码 当然,它通常还要满足下面这些条件 自动化的,不需要人工输入任何数据即可完成 独立的,任何两个单元测试之间都不应该发生调用关系 可重复的,单元测试可以无限重复执行且结果应该一致 传统的单元测试,即是测试一个函数是否正确运行。单元测试 2022-04-22 杂项 #Java #SpringBoot #单元测试
centOS 防火墙 docker-compse 的问题当 centOS 关闭掉防火墙后,请务必重启 docker 1systemctl restart docker 否则会导致 docker-compose 出错 1ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER 2022-04-21 杂项 #Docker #centOS
Gitbook 安装出错执行 npm i gitbook-cli -g 时出现 12345 if (cb) cb.apply(this, arguments) ^TypeError: cb.apply is not a function at /home/travis/.nvm/versions/node/v12.18.3/lib/node_modules/gitbook-cli/node 2022-03-24 杂项 #Gitbook #nodejs
macOS 更新后导致 sdk 丢失问题在 macOS 更新后,CLion 可能会出现如下错误 123456CMake Warning at /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.15/Modules/Platform/Darwin-Initialize.cmake:131 (message): Ignoring CMAKE_OSX_SYSROOT v 2022-03-22 杂项 #macOS #CLion
Java 生成验证码 Captcha方法效率较低,推荐使用缓存,重复使用验证码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283// 验证码宽度private stati 2022-03-19 学习&开发&实现 #Java #验证码
C++ 模版可变参数列表传递给 C 的 va_list 可变参数列表C 可变参数以 printf 为例,常见如下1int printf(const char* format, ...); CPP 可变参数常见如下 12template<class... Args>int printf(const string &format, const Args &... args); 若此时需要为 C 的 printf 进行包装,使其可以接受 st 2022-01-12 杂项 #C++ #C #可变参数
GitHub 下载的 zip 代码如何与原仓库再次建立连接执行如下命令即可(注意替换关键词) 1234567unzip <repo>.zipcd <repo>git initgit add .git remote add origin https://github.com/<user>/<repo>.gitgit remote updategit checkout master 2021-11-25 杂项 #git #GitHub
2021年浙江工商大学新生赛题解本篇中的题目顺序为预期难度顺序,并非比赛题目顺序 本篇中所有的“更好的优化”均为标准答案之外的思考,不使用此内容也可以通过题目 比赛预期情况总共比赛人数:175 (至少通过一道题的人数,没有通过题的不计入总人数) 题目名 实际通过次数 实际通过比例 预期通过比例 chiking 的偶像 172 2021-11-21 ACM&算法 #ACM
Dockerfile 中下载 JDK8openjdk-8-jdk-headless在 Linux 中常用 apt install openjdk-8-headless 来安装 JDK,但是 dockerfile 中无法正常安装 adoptopenjdk-8-hotspot通常在 docker 中使用 adoptopenjdk-8-hotspot 来代替 openjdk 123RUN ["/bin/bash", &q 2021-11-18 杂项 #Docker #短笔记 #JDK
Mac 使用带 python 的 vimmac 自带的 vim 并不支持 python采用 brew 的 macvim 代替即可 1brew install macvim 2021-11-15 杂项 #macOS #vim
Strassen算法代码本文仅代码,无理论解释 实话实说,我觉得这个算法在C系列的语言下,简直垃圾到爆炸……毕竟是一群完全不懂程序数学家对着纸弄出来的,看起来好像非常的有用,实际上耗时是非常爆炸的。 但是《算法导论》里有啊……然后上课又要求手写一个 于是我就手写了一个……我尽可能的减少使用的空间同时加快速度了,而且是通过递归实现 Strassen 算法 其中,in.txt 已经预先准备了 3000000 个范围在 0-1 2021-10-13 学习&开发&实现 #C++ #线程池
C++ 语言实现动态变化的线程池线程池JobJob 作为任务的类型 12345678class Job { void *data; function<void(void *data)> func;public: Job(void *data, function<void(void *data)> func); void exec();}; 其中定义两个变量,da 2021-10-13 学习&开发&实现 #C++ #线程池
Codeforces Round#744 (Div. 3)自从退役之后,打了三个月的工,然后再来打这一场 Div3,庆幸自己还能打打,在最后还剩 4 分钟的时候 A 掉了 G 题,终于在比赛期间 AK A. Casimir’s String Solitaire大致题意给你一个字符串,仅还有 'A', 'B', 'C' 三个字符,每次可以同时删除任意两个 'A', 'B',也可 2021-09-29 ACM&算法 #ACM #Codeforces
计算机图形学相关概念分辨率 屏幕分辨率:用水平和垂直方向所能显示光点数总和的乘积表示 显示分辨率:用水平和垂直方向所能显示像素点总和的乘积表示 存储分辨率:指帧缓存区域的大小 帧缓存计算$水平分辨率 垂直分辨率 每个像素所占用的字节$ 图的表示和数据结构 复杂的图形通常被看作是由一些基本图形元素(图元)构成的。基本二维图元包括点、直线、圆弧、多边形、字体符号和位图等 图元通常是指不可再分的独立的图形实体 2021-06-10 学习笔记 #计算机图形学 #学习 #课程
Windows 通过网络访问 WSL2localhost当使用 localhost 时,Windows 直接访问到 WSL 内的进程,即看起来似乎是一台电脑, 127.0.0.1当使用本地 IP 时,即使用 127.0.0.1 时,Windows 将会无法访问到 WSL,Windows 认为这是强调它自己。 JVM(SpringBoot)由于此问题是在使用 SpringBoot 时遇到的问题,并不确定是不是 JVM 的问题还是 Spr 2021-06-07 杂项 #短笔记 #WSL
原生 JavaScript 实现图片裁剪原生 JavaScript 实现图片裁剪由于最近做的一个项目里,需要把用户头像上传。但是要求用户头像必须是正方形,所以需要将矩形图片裁剪为正方形 在花了接近 5 个小时之后,总算是将功能上线了,在此记录下整个思路经过 前提首先,单纯靠前端,是不可能实现将图片截取其中的部分,然后将部分上传到后端。所以,需要靠伪装裁剪效果的方式来实现裁剪 思路首先把裁剪图片的页面进行分层 思路1——clip 层 2021-05-17 学习&开发&实现 #前端 #HTML #JavaScript
面试复习(计算机图形学)渲染管线 渲染流程 应用程序阶段 加载数据到显存 设置渲染模式 调用 DrawCall 几何阶段 顶点着色器:将三维的顶点坐标信息映射到 $[-1, 1]$ 的平面上 裁剪:裁剪出摄像机视野内的顶点 屏幕映射:将 $[-1, 1]$ 内的图片映射到屏幕上 光栅化阶段 三角形设置与三角形遍历:找出片元 片元着色器:对每一个片元进行着色,计算其颜色值 逐片元操作:模板测试,深度测试,混合 2021-03-27 学习笔记 #面试准备 #计算机图形学
面试复习(算法)链表有环问题 判断单向链表是否有环 定义两个指针,从链表的开始,同时沿着链表指针移动,速度分别为一个单位和两个单位。当某个时刻,两个指针指向同一个节点的时候则此链表有环 理论上,速度可以是任意的两个不同的值,因为只要速度差和环的长度有最小公倍数,则必定存在相交的时间点 找出链表的环的交点位置 通过上述步骤(速度取一步两步),当两个指针第一次相遇的时候,将速度为二步的指针移动至开头,并将速度调整 2021-03-27 学习笔记 #面试准备
Codeforces Round#706(Div. 2)-Let's Go HikingLet’s Go Hiking大致题意有一个数组,两个人,第一步,两个人先后选择数组中的两个下标,要求两个人选择的下标不可以相同。随后按照选择顺序以此进行选择,要求选择一个新的下标,使得新的下标是原来下标的左边或者右边,且不超出数组边界,其中第一个选择的人需要保证新的下标对应的值严格小于原来的下标对应的值,而第二个选择的人则相反,需要选择严格大于的,且保证两人在任意时刻选择的下标不相同,第一个不能 2021-03-11 ACM&算法 #ACM #Codeforces