day1 | ||
day2 | ||
day3 | ||
day4 | ||
day5 | ||
day6 | ||
day7 | ||
day8 | ||
day9 | ||
day10 | ||
day11 | ||
day12 | ||
day13 | ||
day14 | ||
.gitignore | ||
LICENSE | ||
README.md | ||
test.cpp | ||
xmake.lua |
bdfz_2024_summer
竞赛的一些方法
- 真正难的地方是通过题目给的信息和性质推出要用的算法
题目经验总结
Day2
U111091 区间2段覆盖
- 不要以小单位的路段为前缀和最小单位,要以房屋为前缀和最小单位
排序
稳定性
隔着老远swap一般不稳定 稳定:插入,归并,冒泡
Day3
U86432 捞鱼(fish)
- 数据离散化是指把数据只保留有用的东西,在本题当中指的是把数据排序后保存顺序关系,让内存数组可以少一些
- 看到哪个东西的数据量最少,实在不行就从那个东西下手
T490194 还原排列
- 学会使用
bool next_permutation(begin,end)
进行排列组合,没有下一个组合时会返回false,下面是一个示例
#include<bits/stdc++.h>
using namespace std;
typedef unsigned int u32;
ostream& operator<<(ostream &os,const vector<int> &v){
os<<"vector<int> [";
for(u32 i=0;i<v.size();i++){
os<<v[i]<<(i!=v.size()-1?",":"]");
}
return os;
}
int n;
int main(){
cin>>n;
vector<int> v(n);
for(int &i:v){
cin>>i;
}
cout<<"v:"<<v<<endl;
while(next_permutation(v.begin(),v.end())){
cout<<"v_pered"<<v<<endl;
}
}
Day4
T435167 01 Sort
通过异色中转
环
Day5
需要学习的点
区间最值
弄懂分数取模出现很大的数字是什么鬼、
-
费马小定理
-
逆元
// a/b%M
ll _ksm(ll a, ll b,ll M){
ll res = 1;
while(b) {
if(b & 1)
res = res * a % M;
a = a * a % M;
b >>= 1;
}
return res;
}
ll ksm(ll a,ll b,ll M){
return a * _ksm(b, M - 2,M) % M;
}
比赛疑问
公平的竞争(fair)
x=2+ {{x}\over{4}}
=> $x = {{8} \over 3}$是怎么得出来的
RMQ 区间最值问题
点击跳转 自己手动实践
Day6
??:4.13.14.20.21
T9
- 先与后或先&后|
快速幂学习笔记
Day7
离线算法和在线算法
有预处理和没有预处理的区别
逆元:学习笔记
线段树:学习笔记
待学:
扫描线 矩阵乘法
Day9
字典树与异或极值
U88589
值域线段树,线段树维护一个桶
Day11
Day12
二分图,染色,BFS遍历
Day13
单调队列