acwing
magnte
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
64位整数乘法
求 a 乘 b 对 p 取模的值。 输入格式 第一行输入整数 a ,第二行输入整数 b ,第三行输入整数 p 。 输出格式 输出一个整数,表示a*b mod p的值。 数据范围 1≤a,b,p≤1018 输入样例: 3 4 5 输出样例: 2 a 和 b 都是1e18,相乘会爆long long,所以可以模拟快速幂的做法,将 b 转化为二进制再逐位处理。 #include<bits/stdc++.h> using namespace std; typedef long long原创 2021-07-28 17:26:15 · 265 阅读 · 0 评论 -
二进制中1的个数(lowbit)
先来看lowbot函数:返回的是x的最后一位1 比如101100返回的就是100 通常可用于查找某个数二进制中1的个数 写法: int lowbit(int x) { return x & -x; } 证明: 模板题: 给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数,表示整个数列。 输出格式 共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中原创 2021-07-28 17:00:20 · 200 阅读 · 0 评论 -
数组元素的目标和 (双指针)
给定两个升序排序的有序数组 A 和 B ,以及一个目标值 x 。 数组下标从 0 开始。 请你求出满足 A[i]+B[j]=x 的数对 (i,j) 。 数据保证有唯一解。 输入格式 第一行包含三个整数 n,m,x ,分别表示 A 的长度, B 的长度以及目标值 x 。 第二行包含 n 个整数,表示数组 A 。 第三行包含 m 个整数,表示数组 B 。 输出格式 共一行,包含两个整数 i 和 j 。 数据范围 数组长度不超过 105 。 同一数组内元素各不相同。原创 2021-07-28 16:04:54 · 236 阅读 · 0 评论 -
最长连续不重复子序列 (双指针)
给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。 数据范围 1≤n≤105 输入样例: 5 1 2 2 3 5 输出样例: 3 代码: #include<bits/stdc++.h> using namespace std; const int N = 100010;原创 2021-07-28 15:57:00 · 124 阅读 · 0 评论 -
acwing-增减序列(差分 + 贪心)
给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。 输入格式 第一行输入正整数 n。 接下来 n 行,每行输入一个整数,第 i+1 行的整数代表 ai。 输出格式 第一行输出最少操作次数。 第二行输出最终能得到多少种结果。 数据范围 0<n≤105, 0≤ai<2147483648 输入样例: 4 1 1 2 2 输原创 2021-07-28 14:46:32 · 2358 阅读 · 1 评论
分享