快读(__int128)
i128 read () { i128 x = 0, f = 1; char ch = getchar (); while (ch < '0' || ch > '9') { if (ch == '-') f = - 1; ch = getchar (); } while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar (); } return x * f;}void print (i128 x) { if (x < 0){ putchar ('-'); x = - x; ...
声明
2024.03.31 Update:新增《Splay(其三)》。
历史更新记录
2024.02.21 Update:文件层级重构,新增《后缀自动机(SuffixAutomaton 旧版)》、《回文自动机(PAM)》
龙年快乐~
2023.12.29 Update:新增《树状数组(Fenwick 新版)》。
2023.12.16 Update:新增《库函数重载》《二项式(Binomial 任意模数计算)》《线性基(Basis)》《线段树(其四)》《Splay(其二)》。
欢迎通过各种渠道向我投稿~
2023.11.02 Update:最新版本都更新在 GitHub 了,但是注意到有些群u貌似不方便Fan Qiang,于是现在跟进上了 GitHub 的项目进度。
自用!非本人原创,仅作整理归档。大部分代码来自于 CodeForces Jiangly 的提交,部分来自于GYM、牛客、Atcoder。文章博客链接,文章 GitHub 链接。
灵感参考链接:beiyouwuyanzu/cf_code_jiangly
目录
目录
声明
目录
一、杂类
01 - in ...
codeforces补题链接
题面链接
A
题目描述
给定一个长度为 $n$ 的一个数组$A$,对于数组$A$会有$T$轮操作,第$i$轮操作操作如下:
$A_{j} \gets A_{i} | A_{(i+j) \mod n}$
经过多少轮,可以使得这个数组所有数相同?
解题思路
将数拆分为二进制,对于每个数的某一位,至少存在一个 $1$, 进行一次操作,可产生一个 $1$, 第二次操作可产生两个$1$,依次进行,可产生$1 + 1 + 2 + 3 + \cdots + i$个 $1$,那么我们就可以暴力枚举一下,复杂度为$O(n \sqrt(n))$
起始也可以大胆猜想下,至多执行 $\log_{2}n$ 次就可以使得数组的数相同。
参考代码
#include<bits/stdc++.h>#define int long long#define pii std::pair<int ,int>void solve() { int n; std::cin >> n; std::vector<int> a ...
(cf补题链接)[https://codeforces.com/gym/606649]
H
题目描述
给定三个数组$A$, $B$, $C$,长度分别为 $n$, $m$, $p$,每个数组取一个数求和,输出前$k$个最大值。
数据范围: $l \le n,m,p \le 1000$, $1 \le k \le min(3000, n \times m \times p)$ , $0 \le A_{i}, B_{i}, C_{i} \le 10000000000$
解题思路
首先想到的最简单的思路是暴力求解,这样的时间复杂度将会是$1e^{9} \log_{2} ^{1e^{9}}$ ,如何优化呢?
我们可以将其中两个数组合并,这里我们选择将$A, B$ 两个数组合并,然后进行排序,这里复杂度为$1e^{6}\log_{2}^{1e^{6}}$, 我么选择合并后的前$k$个最大值和数组$C$合并,这里的复杂度为$3e^{3} \times 1e^{3}$, 可以用堆维护$k$个数。
参考代码
#include<bits/stdc++.h>using i128 = ...
C 箭串
题目传送门
#include<bits/stdc++.h>using i128 = __int128;using i64 = long long;#define endl '\n'#define pii std::pair<int ,int>#define fix(x) std::fixed << std::setprecision(x)const i64 inf = 1e17 + 50, MAX_N = 1e5 + 50, mod = 1e9 + 7;std::mt19937_64 rng(std::chrono::system_clock::now().time_since_epoch().count());int find(std::vector<int> &parent, int x) { while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } return ...
API请求
HTTP动词
GET: 读取(READ)POST: 新建(CREATE)PUT: 更新(UPDATE)DELETE: 删除(DELETE)
PATCH 部分更新
URL宾语
宾语 顾名思义,是一个名词,URL作为API的宾语是作用HTTP的对象,普遍以复数形式存在.
以下为错误示例:
/getAllCars/createNewCar/deleteAllRedCars
正确示例:
/aticles/users/cars
煮个栗子
GET /zoos:列出所有动物园POST /zoos:新建一个动物园GET /zoos/ID:获取某个指定动物园的信息PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)DELETE /zoos/ID:删除某个动物园GET /zoos/ID/animals:列出某个指定动物园的所有动物DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
过滤(filter)
...
组件基础
组件定义
Vue组件定义在一个.vue的文件中,被称为单文件组件SFC :
<script setup>import { ref } from 'vue'const count = ref(0)</script><template> <button @click="count++">You clicked me {{ count }} times.</button></template>
组件使用
若要使用一个子组件,需要在父组件中导入。假设我们把计数器组件放在了一个叫做 ButtonCounter.vue 的文件中,这个组件将会以默认导出的形式被暴露给外部:
<script setup>import ButtonCounter from './ButtonCounter.vue'</script><template> <h1>Here ...
部分示例来源于vuejs中文官网
Vue3对Vue2向下兼容,但部分不兼容
语法
文本插值:
在HTML中插入文本
Message: {{ msg }}```## HTML插值:上述操作只能插入纯文本,可以使用`v-html`插入`html`文本```html <p>Using text interpolation: {{ rawHtml }}</p><p>Using v-html directive: <span v-html="rawHtml"></span></p>
Attribute 绑定
对使用的元素属性进行绑定 想响应式绑定一个Attribute,但又不能使用{{ }}时,可使用v-bind指令:
<div v-bind:id="num"></div>
v-bind指令指示 Vue 将元素的idattribute 与 ...
以下激活方式仅供个人使用,请勿商用,存在法律风险
安装破解包
点击这里安装破解包
进入到网站后,我们可以看到一堆的Jetbrains的工具图标,我们找到最上方的ja-netfilter.zip
下载后解压大一个位置,确保能找到,打开解压后的文件夹进入ja-netfilter/scripts文件夹,里面有好几个文件,执行框选的文件
会先后弹出两个窗口,一定要点确定
修改编译器的VM选项
若无法使用,需要激活可以先试用30天
添加以下三行代码
--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED-javaagent:C:\Tool\ja-netfilter\ja-netfilter.jar
注意,第三行需要改为自己保存上面下载的文件的路径
激活码激活工具
重启编译器(学计算机的应该都知道为什么),在https://jet.bytebarn.top/网页中找到对应 ...
codeforces
未读A. Milya and Two Arrays
A. Milya and Two Arrays
题目描述
给你两个长度为n的数组a和b,a,b中的每个元素都至少出现两次。你可以重新排列a,最后要使得ai+bi的不同种类大于等于3。
解题思路
统计a和b的种类数cnt1,cnt2,因为长度为n且每个种类的数至少出现两次,所以a中每个数贡献的种类数就是出现次数,出现次数,min(
出现次数,cnt2),只要cnt1∗cnt2>=3就行。赛时没想的很清楚写的cnt1+cnt2>=4,其实一样。
参考代码
void solve() { int n; std::cin >> n; std::set<int> a, b; for (int i = 0; i < n; ++ i) { int x; std::cin >> x; a.insert(x); } for (int i = 0; i < n; ++ i) { int x; std::cin & ...