摘要:
类型一:Nim和问题 这类问题的识别特点是(非严谨):两个人轮流从任意多堆物品中选一堆,拿走至少一个(可以全拿走) 解决办法是:对所有的堆的大小求异或,如果结果不为0,那么先手胜,结果为0,先手败 模板题目:https://www.luogu.com.cn/problem/P2197#submit 阅读全文
摘要:
数论好难啊QAQ 先来一些基本的数论必备代码 (1)欧拉筛 const int MAXN=3000001; int prime[MAXN];//保存已经求出的素数 bool vis[MAXN];//判断是不是素数 int Prime(int n) { int cnt=0; memset(vis,0, 阅读全文
摘要:
写在前面 树的遍历问题对于我这种刚入门ACM的蒟蒻还是算比较难的了,很多思路没法从之前普通的题型转移过来 需要多多练习和吸收,加油! UVA 548 Tree 题目链接:https://www.luogu.com.cn/problem/UVA548 思路: 1.根据中序遍历和后序遍历建树(重点) 2 阅读全文
摘要:
1.对于直线分割问题 明确一个前提定理:直线分割新增加的区块等于新增加的交点数+1 定理理解:比如现在添加第n条直线,那么就说明现在已经有n-1条直线了,那么要添加的第n条直线最理想状态 自然是和之前的n-1条直线都相交,即增加n-1个交点。这n-1个交点让第n条直线被分割成为n-2条线段+2条射线 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 样例: 最简单的单词插入,来建立字典树 字典树的本质是模仿人查字典的时候依次检索的过程 #include <iostream> #include <string> #include <stdio. 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/CF1000C 解决思路: 总体上是差分数组,但是可以知道r的上限太大了,我们不能开那么大的数组 解决思路是就记录端点即可,使用map记录 #include <iostream> #include <map> using n 阅读全文
摘要:
dijkstra算法的运用条件是求某一点到其他点的最短路径问题 题目链接:https://www.luogu.com.cn/problem/P4779 实现思路: 类似多米诺骨牌问题,推下第一个,后面的骨牌会按时间顺序倒下,那么最先倒下的那条路便是最短路 每次找目前已知的最短路径(到所需的原点),这 阅读全文
摘要:
并查集可以提供找两部分有没有通路的问题 官方解释:并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题 主要思路: 建立一个数组记录每个数的父亲,初始的时候把每个人的父亲都设为他们自己 之后如果两个数有关系,就把其中一个数的父亲修改为另一个数 最后查询的时候只 阅读全文
摘要:
KMP算法对于像我这样的ACM菜鸡来说实在难以理解 虽然有大佬讲课,但是还是不理解 感谢下面这位大犇的博客,让我看懂了KMP(跪谢) https://www.cnblogs.com/SYCstudio/p/7194315.html 下面是我对于学校题目的一些总结 KMP模板(解释太麻烦了,看上面的大 阅读全文
摘要:
题意 给定一组数组a,我们可以把数组a的任意数调整为1到k里的一个数,要求a[i]与a[n-i+1]的和是定值x(i<n/2) 这道题一开始我的思路是拿到一对数,可以知道在哪个范围内的定值x需要修改一次,两次或者不修改 然后产生了如下代码(没AC) 1 #include <iostream> 2 # 阅读全文