CPP进阶-线段树
C++进阶线段树
例题ACWING242
const int N=1e5+5;
ll a[N],m,n;
struct tree{ll l,r,sum;}t[4*N];
建树(预处理)
void build(ll k,ll l,ll r){
t[k].l=l,t[k].r=r;
if(l==r)return;
ll mid=l+r>>1;
build(k
CPP进阶-树状数组
CPP进阶树状数组
例题ACWING242
const int N=1e5+5;
typedef long long ll;
int n,m,x;
ll c[N],a[N];
lowbit函数,实际上是查询x在二进制下最后一个1的位数(?)
int lowbit(int x){return x&-x;}
修改
void add(int i,int x)
{
while(i>n>>m;
for(int i=1;i
CPP习题-LCA
C++进阶LCA(最近公共祖先)(树上问题)
例题ACWING1172
const int N = 1e5 + 5;
int h[N], cnt, nxt[N], to[N], f[N][20], dep[N], rt, n, m;
邻接表部分
void add(int a, int b) {
to[++cnt] = b, nxt[cnt] = h[a], h[a] = cnt;
}
一遍dfs预处理深度和从u向上走2^i深度到达的点是什么
void dfs(int u, int fa) {
dep[u] = dep[fa] + 1;
f[u][0] = fa;
for (int i = 1; i < 17; i++)
f[u][i] = f[f[u][i - 1]][i - 1];
for (int i = h[u]; i; i = nxt[i]) {
int v = to[i];
if (v == fa)
continue;
...
CPP习题-树型DP
C++ 进阶树型DP(动态规划)
例题ACWING285
const int N = 1e4 + 5;
int h[N], cnt, nxt[N], to[N], f[N][2], w[N], fa[N];
int l, k, rt, n;
邻接表
void add(int a, int b) {
to[++cnt] = b, nxt[cnt] = h[a], h[a] = cnt;
}
以邻接表dfs为基础
void dfs(int u) {
f[u][1] = w[u]; //如果自己要来先把自己的快乐加上
for (int i = h[u]; i; i = nxt[i]) {
int v = to[i];
//DP的部分
dfs(v);//先递归,因为上面要使用下面的结果
f[u][1] += f[v][0]; //自己要来
f[u][0] += max(f[v][0], f[v][1]); //自己不来
} ...
ASS介绍
在线程序请耐心等待加载
介绍&相关信息最近更新{.alert .alert-info}#服务器不稳定!因为服务器不稳定,请玩家勤备份数据!(设置>数据链导出){.alert .alert-danger}#
限流解决方法我们很抱歉如果您因为限流而无法游玩突击方舟,您可以登录ASS·GIT节点体验.如果认可我们的作品请贡献免费的爱心和收藏!{.alert .alert-danger}#全平台更新公告“记忆链登录”已经更新,请详阅下面的蓝色区域(下面的下面)记忆链已经在全平台部署,使用记忆链登录的玩家可以跨平台登录了!!{.alert .alert-info}#打个广告qwq来看看我的最新作品吧!!ColorDrop(音游ABlog(所有人的博客 {.alert .alert-warning}
目前已经适配手机,电脑!
有账户系统的版本(旧版)👉突击方舟HD不推荐!
【求中精票( 得寸进尺 】突击·方舟 - 明日方舟A服-Arknights
👇 简介 👇
突击·方舟(NU版)
Doctor,欢迎来到 突击·方舟
【展示】
快速访问本 ...
CPP教程-筛法
C++教程筛法
对应练习:ACWING868
代码1:埃氏筛法
ans//素数个数,
n//上限,
f[1000001]//是否是素数(0是),
void pre(int n) {
f[1] = 1;
for (int i = 2; i
CPP函数-字符(串)函数
C++函数char字符函数toupper() //函数用来将小写字母转换为大写字母。
char模拟字符串atof(s); //将字符串s转换为double的浮点数
string字符串函数s.size(); //字符串长度
CPP教程-转进制
C++教程转进制模板咯:
从b进制转为10进值
int turn(int b, int n) {
int v = 1, b_n = 0;
while (n != 0) {
if (n % 10 >= b)
return 2e9;
b_n += (n % 10) * v;
v *= b;
n /= 10;
}
return b_n;
}
从10进制转为b进值
int turn(int b, int n) {
int v = 1, b_n = 0;
while (n != 0) {
if (n % b >= 10)
return 2e9;
b_n += (n % b) * v;
v *= 10;
n /= b;
}
return b_n;
}
FineOS
Fine OS 主页发布!欢迎访问https://entiesci.github.io/WebProjects/blog/File/fos!!
CPP教程-最短路径
C++ 教程最短路径
问题描述:
在一个图中,求从s到t的最短路径
解决办法
方法一:弗洛伊德法介绍:这是最简单的方法,时间复杂度为n^3代码:
for(int k=1;k