摘要:
思路 将'G'看成$-1$,'R'看成$+1$,要求最长的子串,使得子串中‘G’和‘R'的数量相等,则转化为求两个下标$i$和$j$,使得前缀和$sum[j]-sum[i-1]=0$,即$sum[j] == sum[i-1]$。 开一个$pos$数组记录每个$sum[i]$第一次出现的位置,之后对每 阅读全文
摘要:
对于每一个数n,除非它是完全平方数,否则它一定有偶数个因子。 因为如果i是n的因子,那么n/i也一定是n的因子。这样,n的因子都是成对出现的,所以n有偶数个因子 但是,有一种特殊情况,即n/i=i。由于i和n/i是同一个数,因子只能是一个,这时n的因子就是奇数个。 把n/i=i变形,得n=i*i,即 阅读全文
摘要:
先将所有奶牛的坐标从小到大排序,然后通过双指针(也可以二分)查找第一个超出第$i$头奶牛交流范围$d$的奶牛的坐标$r$,同时答案累加上$r-i-1$(和第$i$头奶牛范围不超过$d$的奶牛数,减一是除去第$i$头奶牛自身)。 const int N=1e6+10; int a[N]; int n, 阅读全文
摘要:
直接模拟即可。 const int N=110; char g[N][N]; int n,m; bool check(int x,int y) { return x>=0 && x<n && y>=0 && y<m; } int count(int x,int y) { int res=0; for 阅读全文
摘要:
差小积大。 如果$n \mod m == 0$,那么$m$个数均为$n/m$。 如果$n \mod m != 0$,那么其中有$n%m$个数在数值上比$n/m$大$1$,其余$m-n%m$个数的值仍然为$n/m$。 int n,m; int main() { cin>>n>>m; int k=m-n 阅读全文
摘要:
圆圈的长为 \(n\),逆时针记为:\(0,1,2,…,n−1\),而大圣每次飞的距离为 \(d\)。 大圣所在的位置记为 \(x\),而大圣想去的地方在 \(y\),且筋斗云只沿着逆时针方向翻,告诉大圣至少要飞多少次才能到达目的地。 思路 假设飞$m$次到达目的地。 则满足:\((x+m*d) \ 阅读全文
摘要:
根据唯一分解定理: \(N=P_1^{\alpha_1}P_2^{\alpha_2}\cdots P_n^{\alpha_n}\) 要求$N$的大于 \(1\) 的因子组成的满足任意前一项都能整除后一项的严格递增序列,其中的某一满足条件的序列如下: \(P_1,P_1^2, \cdots ,P_1^ 阅读全文
摘要:
思路 要求包含这 N 个整数的最短的等差数列有几项,则首项取数组$A$中的最小值,末项取数组$A$中的最大值。 假设公差为$d$,首相为$A[0]$,则相邻两项的差$A[i]-A[0],i \in [1,n-1]$一定是公差$d$的倍数,于是对所有相邻两项的差求$gcd$即可得到公差$d$。 con 阅读全文
摘要:
水题~。 注意权值和可能会爆int。 const int N=1e5+10; int val[N]; LL sum[N]; int n; int maxd; void dfs(int u,int d) { if(u > n) return; maxd=max(maxd,d); sum[d]+=val 阅读全文
摘要:
贪心思路:每次将第$i$个位置上的数,与数字$i$所处的位置进行交换。重复这个操作,每次至少会将一个数字通过交换至归位,直到序列变为有序。 const int N=1e5+10; int a[N]; int n; int main() { cin>>n; for(int i=1;i<=n;i++) 阅读全文