摘要: 异或(^) 运算规则:$1,0 \rightarrow 1$可以抽象的理解为 不进位加法 异或的性质:$A$^$A=0$ ​ $A$^$0=A$ 例题 :有一些数两两重复,除了一个数落单,不开辟额外空间,找到那个数。 思路 :让数组内的 所有数进行异或运算 ,最后的结果就是落单的数。 与(&) 运算 阅读全文
posted @ 2019-07-07 09:33 夜烛灯花 阅读(217) 评论(0) 推荐(0)
摘要: 1. "筱玛爱地理" 费马小定理:$a^{ n}$ $mod$ $p=a^{p n 1}$ $mod$ $p$($p$为质数) 由题目可知$β=V/E$,而结果要求我们对$β$排序后取余,即求$α=β $ $mod$ $N (N=1e9+7)$ 所以很容易根据上面的公式推导出$α=V E^{p 2} 阅读全文
posted @ 2019-07-06 14:54 夜烛灯花 阅读(144) 评论(0) 推荐(0)
摘要: 埃氏法 时间复杂度为$O(nloglogn)$,没有欧拉筛法复杂度小 代码如下: cpp void prime() { num[0] = num[1] = 1;//特判 for (int i = 2; i 阅读全文
posted @ 2019-07-05 21:18 夜烛灯花 阅读(202) 评论(0) 推荐(0)
摘要: 题目来源洛谷: "P1308 统计单词数" 自动机 就是将代码分为几种状态,而下面这道例题就是一个 有穷自动机 ,划分为两种状态: ①是空格 ②是字母 个人理解有穷自动机就是每一步只做唯一一件事,并且每走一步一定要 判断并修改状态 。 代码如下: c++ include include includ 阅读全文
posted @ 2019-07-05 21:17 夜烛灯花 阅读(309) 评论(0) 推荐(0)
摘要: 首先将指数转换为2进制,如$2^{11}$,指数11的二进制为1011,即$8+2+1$,可以得到$2^{11}=2^8+2^2+2^1$。 所以通过base的自增和判断指数二进制具体位的0或者1来给ans加base。这样时间复杂度$O(n)=log(n)$,效率很高。 1.题目来源洛谷: "P12 阅读全文
posted @ 2019-07-05 21:17 夜烛灯花 阅读(278) 评论(0) 推荐(0)
摘要: 01背包问题思想是将将总数进行拆分,拆分成每块钱(每个重量基数)。 算法实现是将每个物体抽象为一行,每一列为总数的细分,再分别从物体本身的价格(重量)到总数循环,每一次都进行f[i]=max{f[i],f[i v[j]]+v[i] w[i]}(f[i]为每一格的最大收益,v[i]为物体价格/重量,w 阅读全文
posted @ 2019-07-05 21:13 夜烛灯花 阅读(134) 评论(0) 推荐(0)
摘要: 时间复杂度 分析方法: 只要关注最大阶级的量级即可。 加法法则:总复杂度等于量级最大的那段代码的复杂度 乘法法则:嵌套代码复杂度等于嵌套内外代码复杂度的乘积 不同复杂度大小比较: $O(1) 常见$O(logn)$算法有二分查找 而$O(nlogn)$就是$logn$循环执行n遍的结果。 快速排序复 阅读全文
posted @ 2019-07-05 21:11 夜烛灯花 阅读(150) 评论(0) 推荐(0)
摘要: 记忆化搜索: 理解:记忆化搜索是在递归或搜索需要消耗很多资源的时候,在每一次return的时候顺便用一个数组来存放这个节点的数据。在每一次判断的时候判断数组该节点是否为空,不为空就可以直接调用该节点的数组,省去了重复递归或者搜索的时间。 题目①:P1464 Function AC代码: #inclu 阅读全文
posted @ 2019-07-04 11:06 夜烛灯花 阅读(127) 评论(0) 推荐(0)
摘要: 1.打表: 来源洛谷:P1217 回文质数 第一次用打表的方法做题,感觉打开了新世界。 打表法就是将题目中需要的答案集合提前算出来,存到代码里,根据题目所需取答案。 在数据量很大但所给时间比较少的情况下使用效果显著。 详细过程集成在代码注释中: #include<iostream> //#inclu 阅读全文
posted @ 2019-07-04 11:04 夜烛灯花 阅读(206) 评论(0) 推荐(0)