08 2022 档案
摘要:##https://ac.nowcoder.com/acm/contest/33188/F 既然是取点就该想到点双。 如果全图就是一个点双,显然可行。 如果只有 2 个点,显然可行。 若全图有多个点双,如果二者都在同个点双,显然不可行。 枚举 1 ~ n−1 的过程中点的变化是连续的,但如果有个人开
阅读全文
摘要:#Hacker 对模式串建立 SAM ,将匹配串的字符一个个走下去,没有该字符就向上跳 parent tree 上的父亲继续找,如此得到对于每个前缀 b1,i 的可最长匹配的后缀,加个线段树维护权值前缀和的最小值即可。 #include<bits/stdc++.h> #define IL inlin
阅读全文
摘要:当发现dfn[x]<= low[j] 说明y搜不到x上面 说明x是子树 if(dfs(x)<=low(y)){ cnt++; if(x不是根节点|cnt>1) 说明x是割点 将栈中元素弹出直到弹出y为止 而且x也是在双连通分量里面 } 割点属于两个双连通分量 1.出口数量大于等于2 2.不同连通块之
阅读全文
摘要:https://www.acwing.com/problem/content/description/1185/ 如何求割点: x->y: 1.如果从y开始搜能搜到x 那就一定不是割点 2.如果不能搜回去 x不是根节点 删掉x 一定会分成两个不连通的部分 3.如果x是根节点 当至少有两个子节点 才会
阅读全文
摘要:无向图 缩点后 变成 一颗树 叶子结点就是 出度为0 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 5010,M=20010; int n,m; int h
阅读全文
摘要:最长路 如果有正环就输出无解 a>b 那么b到a连一条长度为1的边 结论: 一个正环一定是某个scc中的 对于某个scc中的所有边 ,只要又一个边的权重是严格>0 因为u+w->b w>0 又u和v 在一个scc中 则v也一定能到v 所以就存在一个正环 那么当没有正环的时候 经过tarjan的图就是
阅读全文
摘要:拓扑图最长路 等于 背包问题求方案数 因为要求点不同 存在多条边同一情况 需要边判重(set) 拓扑求方案数 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set> using name
阅读全文
摘要:第一问:给几个点传信息那么图的所有点都可以街道(看看起点p有几个点就可以了) 第二问:一个图变成强联通分量需要加几条边 结论 加max(p ,q )的边就可以 #include <iostream> #include <cstring> #include <algorithm> using name
阅读全文
摘要:#https://www.acwing.com/problem/content/1176/ 对于拓扑图 如果某一个点的出度为0 那么这个点就能被其他所有点到达 但是题目里所给的点不是拓扑图 所以我们需要缩点 强联通分量里面的所有点互相到达 外面的点到这个强联通的点可以到达 所以就可以强联通分量上的点
阅读全文
摘要:联通分量:对于分量中的任意两个点u v 必然可以从u走到v 从v走到u 强连通分量:极大 强联通分量问题:一般可以 将任意一个有向图 转化为一个 有向无环图(dag 拓扑图) 通过 将所有联通分量缩成一个点 拓扑图: 最最短路可以通过递推变成线性的复杂度 通过dfs顺序来求强联通分量 对于没跳边分成
阅读全文
摘要:边双联通分量 edcc 桥 点双连通分量 edc 割点
阅读全文
摘要:https://codeforces.ml/contest/1721/problem/D 因为最终答案必须是唯一的 然后从最高位开始 当且当a b 各个数子的当前位的1和0是一样的时候 就可以通过分配使得c数组当前位1 级所有当前位上的 0 1数量相同: ~b 等于 a 就满足条件 让ans+=1<
阅读全文
摘要:https://codeforces.ml/contest/1721/problem/C 从n往前走 因为对于ai 他的最大值就是他对应下面的b数组 当一个数ai的最小值和最大值都只能取这个数的时候 那么后续的数也一定不能匹配这个数 所以弄个指针j在b数组 ai只能在bi里面通过二分找最小值 然后
阅读全文
摘要:输入 R,G,B,K,要求构造字符串(只由 R,G,B 构成),满足:R 出现 R 次,G 出现 G 次,B 出现 B 次,RG 出现 K 次。问可以构造出多少种这样的串。 首先考虑 G,B 的分配(不会影响到 RG),方案数为; 然后在排好的 GB 串中选 K 个 G,插入
阅读全文
摘要:树:n点 n-1边 基环树:n点 n以上边 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5, M = N*2; int n, q; int h[N], e[M], ne[M], idx; int fa[N], d
阅读全文
摘要:#扔骰子 可以选择扔到某个数的时候获得然后退出 或者不拿走继续扔 dp[i]表示扔第i次的时候的最大期望 f[n]=1/6*(max(1,f(n-1))+ max(2,f(n-2)) +max(3,f(n-1)) +max(4,f(n-1)) +max(5,f(n-1)) +max(6,f(n-1)
阅读全文
摘要:##真假英雄 http://oj.saikr.com/contest/20/problem/K 在一个小镇上,很多人都患了一个精神病,他们都认为自己是“英雄”或者“反派”中间的一种,“英雄”觉得自己是正义的一方,所以当你问起他谁是“英雄”时,他会直接按照自己心里的话说对方的身份,“反派”觉得不能暴露
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/contest/39100/F 来源:牛客网 阿宁可以使用倒转膜法,该膜法可以使所有城市(除了阿宁当前所在的城市)的属性变化(炎热变酷寒,酷寒变炎热),花费 z时间。倒转膜法可以使用任意次。相同属性x 不同属性y for(int i =
阅读全文
摘要:累加匹配的后缀 因为只能往队头移动 后缀相同就是不用移动的位置 #include<bits/stdc++.h> #define ll long long using namespace std; int n; string s1,s2; int main(){ cin>>n; cin>>s1>>s2
阅读全文
摘要:下层到上层的边不用建 从上层到下层就已经代表了做了一次选择 如果还能回到上层的话会出问题的 因为可以免费 k 次,所以我们要建 k+1 层图 在 k+1 层图上我们已经不能再往下了,即免费操作已用完 for(int i=1,x,y,z;i<=p;i++) { scanf("%d%d%d",&x,&y
阅读全文
摘要:对损失求平均是为了让梯度值不至于过大 batchsize小挺好的 过大就难收敛了 理论上不会导致影响结果 网络参数更新的梯度 是所有样本的梯度求和取平均值 随机梯度是采样随机 不是批量大小随机 牛顿法快 但不一定收敛结果好 训练集 验证集 测试集(只用一次) 超参数是自己设置的 而不是训练的 权重衰
阅读全文
摘要:如 华为挑战赛2022第1题
阅读全文
摘要:##模板 void insert() //建trie树 { int p = 0; for (int i = 0; str[i]; i ++ ) { int t = str[i] - 'a'; if (!tr[p][t]) tr[p][t] = ++ idx; p = tr[p][t]; } cnt[
阅读全文
摘要:p/q 可以变成 p/(q-p) 或者 (q-p)/p 对于这样根据p和q的大小 进行分子分母的放置的时候 可以写递归 void calc(ll p, ll q) { if(p == 1 && q == 1) { to do } else { if(q - p >= p) { calc(p, q -
阅读全文
摘要:##传送ABC265 https://atcoder.jp/contests/abc265/tasks/abc265_e 从原点移动n次 每次可以选择 (x,y) -> (x+a,y+b) (x,y) -> (x+c,y+d) (x,y) -> (x+e,y+f) 其中一种进行移动 求移动n次的方案
阅读全文
摘要:##abc265 Dhttps://atcoder.jp/contests/abc265/tasks/abc265_d 找到符合条件的 x y z w 使得 前缀和s sy-1-sx-1=p sz-1-sy-1=q sr-1-sz-1=r #include<bits/stdc++.h> using
阅读全文
摘要:##华为云挑战赛1001 求前n个区间分成m段的第(len-0.05*len)个小数 #include<bits/stdc++.h> using namespace std; void read(int &x) { char c=0;x=0; while(!isdigit(c))c=getchar(
阅读全文
摘要:存下数据结构的所有历史版本 核心思想是只记录每个版本与前一个版本不同的节点 凡是有变化的点就裂开 否则不用动 ##第k子树 因为线段树的性质,所以每个点的左子树的值域区间 <=右子树的值域区间。 所以我们先看左子树区间有多少个数,记为cntleft。 可以看出BSTrBSTr跟BSTl−1BSTl−
阅读全文
摘要:在一张有向无环图中,对于每个点 uu,设其所有能到的点的 SG 函数值集合为集合 A,那么 u 的 SG 函数值为 mex(A),记做 SG(u)=mex(A) 集合当中不存在的最小自然数 只有一个棋子 先手必胜=起手所在位置不等于0 多个棋子 先手必胜=所有起点所在位置异或和不等于0 #inclu
阅读全文
摘要:之后每次迭代t^1 使得 0->1 1->0 这里有 n个世界,每个世界都有 m 个点。 在i个世界中,你最多可以选择一条边 ,从 u点 移动到 v点 (可以选择不移动)。随后进入到第 i+1 个世界中的点 。如果选择在 u 点上不移动,则进入到第 i+1 个世界的u点 。 找到一段连续的世界 ,使
阅读全文
摘要:#dp(i,j)前i个最多匹配a的前j个 ##给一个括号串a是b的子序列(子序列 :中间可能缺 只保留相对顺序 不考虑绝对顺序) 求子串b的合法数量 dp(i,j,k) 母串b的前i个最多匹配子串a的前j个,剩下k个左括号未匹配 z只需维护左边有几个没有被匹配的左括号就可以 a: j j+1 b:
阅读全文
摘要:##给定a[i]求让a2[i]构造成等差数列 要求sum(a[i]-a2[i])^2的值最小 https://ac.nowcoder.com/acm/contest/33187/J 转化成最小二乘法 (i,ai) 通过最小二乘法求出k,b构成的直线方程 y=kx+b 求是要变成的等差数列 long
阅读全文
摘要:##给定有向图 染任意一点为黑色 如果一个点的所有入边都为黑色 那么他就可以变成黑色 难点涉及搜索时候先后的问题 https://ac.nowcoder.com/acm/contest/33186/J 性质 :因为染入度为1的点的时候不如把他的前面一个点染色 所以将所有入度为1的点合并到他的前一个点
阅读全文
摘要:##找坐位https://ac.nowcoder.com/acm/contest/33186/C 需要注意 因为是射线而且起点固定 所以每一行只有最前面的那一个位置的斜率是符合要求的 可使用单指针的枚举 计算两个顶点开始 每一行不被射线射到的位置向下取整即可 #include <bits/stdc+
阅读全文
摘要:##牛客第一题https://ac.nowcoder.com/acm/contest/33186/A signed main(){ // ios::sync_with_stdio(false); // cin.tie(0),cout.tie(0); int n; cin>>n; for(int i=
阅读全文
摘要:#期望的线性性质:E(ax+by)=aE(X)+bE(Y)=p(X)×E(X)+p(Y)×E(Y) dp(状态)的值:在当前状态下还需要多少论才能结束答案 所以输出的是dp(初始状态) dp(目的状态=0) dp[i][j]=p1 * ( dp[i-1][j-1] + 1 ) + p2 * (dp[
阅读全文
摘要:1.两个b中隔k个a 牡牛和牝牛 https://www.acwing.com/problem/content/1309/ 约翰决定任意两只牡牛之间至少要有 K 只牝牛。求组合的方案书 dp f[i]集合:考虑前i头牛,且第i头牛是1的方案 由f[0]...f[i-k-1]转移过来 #include
阅读全文
摘要:void mul(int c[], int a[], int b[][N])//a*b=c a是行向量 b是矩阵 { int temp[N] = {0};//缓存矩阵 因为mul传入的c矩阵和a矩阵 可能是相同的 你不能一边读一边改 for (int i = 0; i < N; i ++ ) for
阅读全文
摘要:给出一系列线性同余方程: x≡a[1](mod m[1]) x≡a[2](mod m[2]) x≡a[3](mod m[3]) … 求x的最小值 令M=m[1]∗m[2]∗…∗m[n] 令M[i]=M/m[i], 因为m[]中的数两两互质,所以M[i]与m[i]互质,所以可以用扩欧求出M[i]的逆元
阅读全文
摘要:因为乘是o1 但我们变成olog //龟速乘 将乘法变成加法 a*b%k LL qmul(LL a, LL b, LL c) { LL res = 0;// 加法的0元为0 while (b) { if (b & 1) res = (res + a) % c; a = (a + a) % c; b
阅读全文
摘要:x和y的最大公约数是d (x,y)=d 转化成方程 ax+by=d 参数x和y相关的表达式 x y正负不管 x=x0+kb/d (对方的那坨来加的) y=y0-ka/d //拓展欧几里得 int exgcd(int a, int b, int &x, int &y)//ax=d%(mod b) x和
阅读全文
摘要:φ(N)=N(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) //注意这里的n φ(1)=1 1.欧拉函数是积性函数——若 m,n 互质,φ(mn)=φ(m)φ(n) 2.若 n 是素数 p 的 k 次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1
阅读全文
摘要:##越狱 https://www.acwing.com/problem/content/1292/ n个房间m个宗教 求2个相同相邻宗教的情况 : 正难则反 ! m^n-m*(m-1)^(n-1) //所有情况-每个房间信奉不同宗教的情况(第一个房间是m 第二情况必须不同所以是m-1) cout <
阅读全文
摘要:N=(p1^c1)(p2^c2)...(pk^ck) N^2=(p1^(c1**2)) * (p2^ (c22) )...(pk^ (ck*2) ) ##约数个数 f[N]=(c1+1)(c2+1)...(cn+1) ##拍打牛头https://www.acwing.com/problem/cont
阅读全文
摘要:##相邻质数距离 https://www.acwing.com/problem/content/198/ #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long lon
阅读全文