该文被密码保护。 阅读全文
posted @ 2021-03-15 16:55 ChunhaoMo 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 题意:u能直达u + v当且仅当 u&v = v(记住是有向边不是无向边) 然后问你 a 是否可以到达 b ,不一定是直达,但可以经过中间点到达分析:其实如果没做过或者对位运算不敏感只能对着数据写出他们的二进制,找规律并且大胆猜想。人类之所以发现很多东西,就是不断地猜想,不断测试知道多数情况都符合我 阅读全文
posted @ 2021-03-11 15:09 ChunhaoMo 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题意: 有n个蹦床排成一列,第i个蹦床有弹力值s[i],在当前位置你可以往右跳到第i + s[i]个蹦床如果i + s[i] > n那么这次连跳结束,而且每跳一次弹力值减一但最小减到1 问你最少需要多少次起跳(就是第一次跳而不经过其他跳到),使得所有的蹦床弹力值都变为1 分析: 只有从前面的蹦床跳到 阅读全文
posted @ 2021-03-11 14:09 ChunhaoMo 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 双向搜索是为了避免在深层子树上浪费时间 有的问题有初态 和 终态 当我们从初态和终态双向搜索时,就相当已经搜索了整个状态空间 来看一个例题吧 达达帮翰翰给女生送礼物,翰翰一共准备了N个礼物,其中第i个礼物的重量是G[i]。 达达的力气很大,他一次可以搬动重量之和不超过W的任意多个物品。 达达希望一次 阅读全文
posted @ 2019-12-21 12:20 ChunhaoMo 阅读(1012) 评论(0) 推荐(1) 编辑
摘要: 搜索顾名思义,就是一个个地寻找,直到寻找到最优解或者答案为止 搜索经常和递归和栈相关,因为我们需要遍历每个地方的,不管这个分支是否有解都要回溯一下 首先我们先熟悉树和图的遍历: 1.存储方式,选择邻接表;这样是很省空间的 邻接表,以表头数组head,使用ver和edge数组分别表示这一条边的终点和权 阅读全文
posted @ 2019-12-18 20:18 ChunhaoMo 阅读(211) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int a[1000000],b[N]; int nex[N]; void GetNext(int *x,int len) { //int len = s.len 阅读全文
posted @ 2019-11-30 15:27 ChunhaoMo 阅读(87) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int p[N]; void manacher(string s,int &st,int &x) { memset(p,0,sizeof(p)); string 阅读全文
posted @ 2019-11-29 16:11 ChunhaoMo 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。 你总共三种操作方法: 插入一个字符 删除一个字符 替换一个字符 分析: 如果想具体看什么时候 插入一个字符 删除一个字符 替换一个字符 是不可行的,因为情况很复杂,你很难去做判断。 所以就用动态规划来解 阅读全文
posted @ 2019-11-24 14:04 ChunhaoMo 阅读(199) 评论(0) 推荐(1) 编辑
摘要: 宏定义的本质: 字符替换,没有类型转换,一定记住 来看一个例子: #include<bits/stdc++.h> using namespace std; #define AREA(a,b) a+b int main() { int s=AREA(3,4)*AREA(3,4); cout << s 阅读全文
posted @ 2019-11-23 19:07 ChunhaoMo 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 题意: 特殊数字”是指只能被分解为2,3,7的乘积的数字。“特殊数字”序列为1, 2, 3, 4, 6, 7, 8, 9, 12, 14, ...展示了前10个“特殊数字”。按照惯例,1也是“特殊数字”。给定整数n,写一个程序,找到序列中,第n个“特殊数字”。如:n=9,找到“特殊数字”序列中第9位 阅读全文
posted @ 2019-11-23 16:35 ChunhaoMo 阅读(679) 评论(0) 推荐(0) 编辑