自从开发商把飞机的操作改得非常神奇后,我的飞机技术基本废了,于是我决定在设置里一探究竟,于是我发现了作者险恶的用心。 分析图 图中红色的项就是新版中飞机开不好的根本原因,它就是那个被作者修改的项 参考图
目录1 帷幕控制2 帷幕持续5年的BUFF3 有益事件4 BUFF事件5 政令事件6 事件链代码7 五大邪神8 常用作弊指令9 其他指令10 行星修改 帷幕控制 event utopia.3000进入帷幕 event utopia.3190 天选之子事件 (随机领袖可能失败记得存档先) event utopia.3181 预知接口 event utopia.3171 灵能护盾 event utopia.3161 PIS跳跃引擎 event utopia.3151 送活金属,反物质,盖亚创造,能源
题目链接
最小点覆盖 同样的转化为图G=(V,E),则问题转化为: 在图G中选取尽可能少的点,使得图中每一条边至少有一个端点被选中。 这个问题在二分图问题中被称为最小点覆盖问题。即用最少的点去覆盖所有的边。 结论:由König定理可知最小点覆盖的点数 = 二分图最大匹配 最大独立集 依旧转化为图G=(V,E),则问题转化为: 在图G中选取尽可能多的点,使得任意两个点之间没有连边。 这个问题在二分图问题中被称为最大独立集问题。 结论:最大独立集的点数 = 总点数 – 二分图最大匹配 证明: 假设
题目链接:https://www.luogu.org/problem/T84891 题目 思路 如果零件A与零件B冲突,且零件A与零件C冲突,那么零件B与零件C也是冲突的。 也就是说在零件A、零件B、零件C中,我们只能选出其中一个零件。 而零件A 、零件B、零件C有一个共同的特征,那就是%K后为同一值。 所以只要把所有输入内容%K后塞入一个set,最后输出这个set的大小就可以了。 代码 #include <cstdio> #include <algorithm> #in
题目链接:https://www.luogu.org/problem/T84893 众所众知,二分用来查找单调序列中的内容,三分用来查找单峰序列中的内容。 题目 代码 #include <cstdio> #include <utility> #include <iostream> #include <vector> #include <cmath> using namespace std; const long long INF = 0
struct segment_tree_t { lli n; vector<lli> te; vector<lli> lz; segment_tree_t(lli n) : n(n), te(n << 2, 0), lz(n << 2, 0) { } lli ls(lli x) { return x << 1; } lli rs(lli x) { return x << 1 | 1; } void push_up(lli r
目录1 题目描述1.1 输入描述1.2 输出描述1.3 示例12 题解2.1 完整代码 链接:https://ac.nowcoder.com/acm/contest/140/J?&headNav=www 题目描述 White Rabbit has a rectangular farmland of n*m. In each of the grid there is a kind of plant. The plant in the j-th column of the i-th row
目录1 题目描述1.1 输入描述1.2 输出描述1.3 示例12 题解 题目链接:https://ac.nowcoder.com/acm/contest/135/I?&headNav=acm 题目描述 Apojacsleam喜欢数组。 他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作: 操作一:将a[L]-a[R]内的元素都加上P 操作二:将a[L]-a[R]内的元素都减去P 最后询问a[l]-a[r]内的元素之和 输入描述 输入共M+3行: 第一行两个数,n,M,意
树状数组 重点是在树状的数组 大家都知道二叉树吧 叶子结点代表 A 数组 A[1]~A[8] 现在变形一下 现在定义每一列的顶端结点C[]数组 如下图 C[i]代表 子树的叶子结点的权值之和// 这里以求和举例 如图可以知道 C[1]=A[1]; C[2]=A[1]+A[2]; C[3]=A[3]; C[4]=A[1]+A[2]+A[3]+A[4]; C[5]=A[5]; C[6]=A[5]+A[6]; C[7]=A[7]; C[8]=A[1]+A[2]+A[3]+A[4]+A[5]+A[6]+
在使用string类时,需要包含头文件 #include<string></string>。并且引入using std::string; using std::wstring;或using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍:
#include <cstdio> #include <string> #include <cstring> using namespace std; const int MAXN = 1e5 + 100; int main() { int temp; scanf("%d", &temp); getchar(); //如果在读入非字符串后要读入字符串,先吃回车 string str; str.resize(MAXN); //需要先开
目录1 大体题意1.1 输入1.2 输出2 思路2.1 博弈部分2.2 判断函数2.3 DFS函数2.4 状态压缩部分3 完整代码 题目传送门 大体题意 Alice 和 Bob 在玩一个游戏,Alice是先手,Bob是后手 给出一个数字序列,Alice和Bob每回合可以从中取出一个数 当序列变为不下降序列时,上一回合的玩家获胜 输入 第一行为 T[1<=T<=100] ,组数。 每组第一行为 N[2<=N<=15] ,序列长度。 后面是一个长度为 N 的序列 A ,其中
模板题:https://nanti.jisuanke.com/t/38232 可以求出一个序列中是否存在某个子序列 基本思想 定义一个next数组,用来存储在第i位后面出现的序列中的某一个元素的出现位置。 例如字符串abcdefg[字符串下标从一开始] 可以得到next的内容为: next[0]['a'] = 1; next[1]['a'] = -1; next[2]['a'] = -1; …… next[0]['b&
目录1 定义2 Kruskal 算法2.1 伪代码2.2 完全代码3 Prim 算法3.1 伪代码3.2 完全代码 定义 连通图:任意两个顶点vi与vj都有路径相通。 强连通图:任意两个顶点vi与vj都有路径相通。 连通图:图的边具有一定的意义,每一条变都有对应着一个权。 生成树:一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点。 最小生成树:建立生成树且所花费的权最少。 PS:如果生成树中再添加一条边,则必定成环。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)
前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了.
与 1 and 1 = 1 0 and 1 = 0 1 and 0 = 0 0 and 0 = 0 或 1 or 1 = 1 0 or 1 = 1 1 or 0 = 1 0 or 0 = 0 异或[相同为0,不同为1] 1 xor 1 = 0 1 xor 0 = 1 0 xor 1 = 1 0 xor 0 = 0
基本解法 \Omicron(N^2) 譬如给定 2 个序列: 1 2 3 4 5 3 2 1 4 5 试求出最长的公共子序列。 显然长度是 3 ,包含 3 4 5 三个元素(不唯一) 我们可以用 dp[i][j] 来表示第一个串的前 i 位,第二个串的前 j 位的 LCS 的长度, 那么很容易想到状态转移方程: 如果当前的 A1[i]A1[i]A1[i] 和 A2[j]A2[j]A2[j] 相同(即是有新的公共元素),那么 dp[i][j] = \max(dp[i][j], dp[i − 1][
可以将有序数列中的查找操作的时间复杂度优化到log N级别 数列为T获取查找部分的开头下标[start]和结束下标[end]以及要查找的数[x] 计算中间平分点下标[mid],即start和end的平均数
基础解法[O(N^2)] T为输入的序列,F为以第i个数结尾的最长上升子序列长度 可得到F[i]等于F[0 …… i – 1]中满足T[i] > T[0 …… i – 1]的数 例如序列T = {1, 5, 6, 4, 2, 9} 对应的F = {1, 2, 3, 2, 2, 4} F序列中最大的数即为最长上升子序列
1. 在关系数据库中,存放在数据库中的数据的逻辑结构以二维表为主。 2. ASCII 码的含义是美国信息交换标准代码。 3. 不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而, 任何编译系统都不做死循环检验 。 4. ∧ = and丶∨ = or 丶 ¬ = 取反。
目录1 题目描述2 输入输出格式2.1 输入格式2.2 输出格式3 样例3.1 样例输入3.2 样例输出:4 题解 题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。
用于快速查找某个点在哪个集合中,常用于有关图的题中,可查看洛谷 P3367 题。 #include <cstdio> #define _for(i, n) for(int i = 0; i < n; i++) using namespace std; const int MAXN = 1e6 + 100; int m, n, o, x, y; int map[MAXN]; int find(int u) { if(map[u] != u) map[u] = find(map[u
struct nodef { string name; int score; bool operator <(const nodef &n) const { return this -> score < n.score; } }; 这几句表示建立了一个名为nodef的结构体,其成员变量有name和score,重载了运算符<,表示当一个nodef与nodef做<运算时,第二个nodef作为参数n传入,并且运算的返回值为bool型,比较依据是score变量。
目录1 BFS – 广度优先遍历1.1 程序思路1.2 实现方法 – 存储方式为点对点1.3 程序实例 – 存储方式为点对点2 DFS – 深度优先遍历2.1 实现方法 – 存储方式为点对点2.2 程序实例 – 存储方式为点对点 BFS – 广度优先遍历 一种利用队列实现的搜索算法。简单来说,其搜索过程和 “湖面丢进一块石头激起层层涟漪” 类似。形象一点如下: 总的来说,就是先遍历离根节点近的,一层一层的。 程序
点对点 建立一个数组,用下标表示不同的点,用其内容表示这个点所连接的点。例如数组名为graph,然后可以用graph[0] = 1表示0点可以通向1点。 其中,如果一个点可以连向多个点,可以使用二维数组存储,例如graph[0][0] = 1和graph[0][1] = 2表示0点所连接的点有1点和2点。通常,这个二维数组的第二维不会被填满,所以,可以使用向量作为第二维,像下面一样: #include <vector> using namespace std; const int M
在这里,可以发布其他的任何有关信息内容,不限于软件和硬件等。