09 2022 档案
摘要:题意: 存在一个n个节点的环,你不知道n的大小,你可以询问两个节点的距离,会返回两个节点的路径长度,一共有2条,一条长一条短。只能询问50次,请猜出n的大小。 分析: 我们发现对于任意两个点,只要询问两次,如果答案不一样,那么其相加结果之和就是一整个环。因此我们直接任找两个点,算一下即可。我们按顺序
阅读全文
摘要:二分 关键点 : 1.if条件对应答案某一段 (mid<=x) 当是最左侧的时候也符合,这个时候你就让他l=mid 才能找到x 2.mid每次为在左边界 所以找满足条件往右走的数 5 5 3.四种写法,只有两种写法是对。如果是边界不存在的事物,会因为if失败趋于同一个边。中间不存在或者都能考他找到。
阅读全文
摘要:https://atcoder.jp/contests/abc268/tasks/abc268_d #include<bits/stdc++.h> using namespace std; const double PI=acos(-1); #define int long long #define
阅读全文
摘要:出一个合法括号序列,如果他的子段也是合法的括号序列,那么直接有一条边相连,问最后括号序列生成的图中有多少个连通分量. https://codeforces.com/contest/1726/problem/C 首先我们回到合法括号序列的定义: 首先空序列是合法的括号序列. 如果是A合法的括号序列,那
阅读全文
摘要:##https://codeforces.com/contest/1726/problem/B 英文 the bitwise XOR of all elements in a (which are strictly less than ai) is 0. 在a中比ai小的所有元素小于0 首先n>m一
阅读全文
摘要:##因为只有选择而且问的是先手 先手只有两个情况:赢1或者平局0 当长度为2时候 字符串相等的时候就平局 不然就先手肯定选到赢的情况 如果先手选择i 而且当(i+1,j-1)是赢的情况的时候就肯定赢 而且当(i+2,j)是赢的情况的时候就肯定赢 要么当(i+1,j-1)是平的情况的时候后手选择j 而
阅读全文
摘要:两个数组 需要让元素相等 每次操作让a变成她的数位 如1000->4 因为两次操作可以变成1 首先让一个数组变成2然后再是其他的 首先踢出相同元素 然后看着差不多就变成len扔进去 注意multiset排序 可以查不同元素 erase() 传入一个下标 find() 找到这个值出现的第一个位置 #i
阅读全文
摘要:void gauss() { // 转化成上三角矩阵 for (int r = 1, c = 1; c <= n; c ++, r ++ )//枚举行 { // 找主元 一列里面找绝对值最大 int t = r; for (int i = r + 1; i <= n; i ++ ) if (fabs
阅读全文
摘要:给出一个数组 每个数组的值代表一个集合 相邻的两个集合不能重合 问集合中的最大数是多少 线段树维护这个区间的相邻数的最大值 因为相邻的条件所以边界需要特判 #include<bits/stdc++.h> using namespace std; #define int long long #defi
阅读全文
摘要:给一棵树 看能不能往上跳k步 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <queue> #include <map> #include <vector> #includ
阅读全文
摘要:##给定一张n个点 m条边的无向图,点有点权。需要进行n次操作,每次操作,选择一个点a,并移除该点以及与该点相连的所有边,其代价是与点a直接相连的所有点权和。问所有操作的代价的最大值的最小值是多少。 暴力 + 根堆 #include <bits/stdc++.h> using namespace s
阅读全文
摘要:##连续的子序列的m个数 使得第i个数*a[i] 最终得到的值最大 https://atcoder.jp/contests/abc267/tasks/abc267_c 前缀和 + 滑动窗口 转移之间相差一个前缀和 和 a[m]*m vector<LL> a(n + 1, 0); LL ans = -
阅读全文
摘要:开放寻址法 int find(int x){ int t =(x % N + N) % N;/正数负数都存到里面 找个位置给他 while(h[t] != null && h[t] != x){//如果这个位置有值 但是不是那个位置 就找下个位置 t++; if(t==N) t=0;//到了尽头回去
阅读全文
摘要:##https://www.acwing.com/problem/content/4613/ 可以进行操作 选择一行中的两个整数并交换它们。此操作,每行最多只能执行一次。 选择列表中的两列并交换它们。此操作,最多只能执行一次。 能否使得最终列表中每一行的 m 个整数都能按照 1,2,…,m 的顺序排
阅读全文
摘要:#include<queue> #include<cstdio> #include<cstring> #define N 500005 using namespace std; struct edge{ int to,val,next; } e[N]; int m,n,p,s,cnt,g[N],u[
阅读全文
摘要:#https://www.luogu.com.cn/problem/P1262 间谍网络 关键在缩点的时候选择性的tarjan 只会搜搜得到的点 #include <iostream> #include <cstring> #include <algorithm> #include <unorder
阅读全文
摘要:#https://www.luogu.com.cn/problem/P2194 对每个连通块的值求里面的点的最小值 然后加起来就是遍历所有点的最小值 方案数就根据乘法原理乘起来就可以 #include <iostream> #include <cstring> #include <algorithm
阅读全文
摘要:##https://www.luogu.com.cn/problem/P1407 给n个男 女关系 在给m个男 女关系 表示可能出轨的关系 如果原来的男女的关系断裂后(出轨) 是否能重新变成一个联通关系 这里使用强连通分量进行建图 对男设定为i 对应的女设为i+n 所以结果是i -> i+n #in
阅读全文