05 2019 档案
摘要:基本思路,使用差分数组 arr[i]=a[i] a[i 1]; c++ include define maxn 1000000 using namespace std; int arr[maxn],n; int lowbit(int x) { return x&( x); } void add(in
阅读全文
摘要:常规模板题,lowbit(x)=x& x;求和往左走,点加往右走。 c++ include define maxn 1000000 using namespace std; int arr[maxn];int n,m,x,y,d; int lowbit(int x) { return x&( x);
阅读全文
摘要:采用前缀和思想,用二分查找寻找区间,时间复杂度O(n+nlogn) c++ include define maxn 2000000 using namespace std; long long arr[maxn+1]; long long brr[maxn+1]; int main() { brr[
阅读全文
摘要:具体解法是:对队首的某一状态,枚举每一个开关灯操作,记录到达这一新状态的步数(也就是老状态 + 1),若是最终答案,输出,若不是,压入队列。采用结构体记录每个节点,包含当前状态和步数。 c++ include using namespace std; typedef struct{ int stat
阅读全文
摘要:约瑟夫问题 约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。 例如只有三个人,把他们叫做A、B、C,他们围成一圈,从A开始报数,假设报2的人被杀掉。 首先A开始报数,他报1。侥幸逃过一劫。 然后轮到B报数
阅读全文
摘要:[toc] A题 基本思路: 假设n个学生开始字母相同,则分成n/2和n n/2两对的配对数最少 c++ include using namespace std; int main() { int n;cin n;int a[26]={0}; for(int i=0;i s; a[s[0] 'a']
阅读全文
摘要:[TOC] KMP算法 基本思想 算法由两部分组成 1. 计算ptr每一位及之前的字符串中,前缀和后缀公共部分的最大长度的next数组 2. 匹配ptr和str,当ptr失配时,利用next数组,实现ptr的最大后移,从而避免不必要的匹配,减少匹配次数 计算next数组 前缀和后缀公共部分的最大长度
阅读全文
摘要:```c++ include using namespace std; typedef long long ll; typedef struct{ ll l,r,w,f; }Node; Node nodes[1000000]={0,0,0}; ll x,y,ans,mod,single; void
阅读全文
摘要:```c++ include using namespace std; typedef struct{ int l,r,w; }Node; Node nodes[1000000]={0,0,0}; int x,y,ans,mod,single; void build(int l,int r,int
阅读全文
摘要:```c++ //给一n×n的字母方阵,内可能蕴含多个单词。单词在方阵中是沿着同一方向或不同方向连续摆放的。 //摆放可沿着 8 个方向的任一方向,同一单词摆放时可再改变方向,单词与单词之间可以交叉,因此有可能共用 //字母。输出时,将不是单词的字母用 代替,以突出显示单词。例如: //第一行为单词
阅读全文
摘要:1. 朴素解法,复杂度On2,只能过一半的点。 c++ include using namespace std; typedef struct{ int num; int len; int dlen; }Missile; Missile miss[100010]; int cnt=0,n=1,max
阅读全文
摘要:[TOC] DP整理 最长上升子序列 贪心解法ONlogn c++ brr[0]=arr[1][0]; int tmp=0; for(int i=1;ibrr[tmp]) brr[++tmp]=arr[i]; else brr[lower_bound(brr,brr+tmp+1,arr[i]) br
阅读全文
摘要:[TOC] 求最小公倍数 辗转相除法 gcd(a,b)= gcd(b,a%b) 求素数 埃式筛 c++ //复杂度O(nloglogn) for(long long i=2;ii,prime[j]
阅读全文
摘要:s1和s2是两个字符串,小明想知道这两个字符串里最长的公共长度。 s1,s2长度小于5000。 所谓公共长度: 去掉任意长度的字符后,对于子序列s1[i..j]和子序列s2[m..n],(j i)=(n m),且s1[i+k]=s2[m+k] (0 include include include i
阅读全文
摘要:警察抓了 A、B、C、D、E、F、G 七名罪犯,其中四名是小偷,审讯的时候: 因此有四人说谎,警察想要找出小偷是哪些。 A说:“我不是小偷。” x !=0 B说:“E 是小偷。” x = 4 C说:“小偷肯定是 D。” x = 3 D说:“C 是在冤枉人。” x != 3 E说:“小偷不是A和F中的
阅读全文