acwing
magnte
这个作者很懒,什么都没留下…
展开
-
64位整数乘法
求 a 乘 b 对 p 取模的值。输入格式第一行输入整数 a ,第二行输入整数 b ,第三行输入整数 p 。输出格式输出一个整数,表示a*b mod p的值。数据范围1≤a,b,p≤1018输入样例:345输出样例:2a 和 b 都是1e18,相乘会爆long long,所以可以模拟快速幂的做法,将 b 转化为二进制再逐位处理。#include<bits/stdc++.h>using namespace std;typedef long long原创 2021-07-28 17:26:15 · 185 阅读 · 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 · 130 阅读 · 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 · 174 阅读 · 0 评论 -
最长连续不重复子序列 (双指针)
给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n 。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3代码:#include<bits/stdc++.h>using namespace std;const int N = 100010;原创 2021-07-28 15:57:00 · 71 阅读 · 0 评论 -
acwing-增减序列(差分 + 贪心)
给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。输入格式第一行输入正整数 n。接下来 n 行,每行输入一个整数,第 i+1 行的整数代表 ai。输出格式第一行输出最少操作次数。第二行输出最终能得到多少种结果。数据范围0<n≤105,0≤ai<2147483648输入样例:41122输原创 2021-07-28 14:46:32 · 2051 阅读 · 1 评论