您当前的位置: 首页 > 

*DDL_GzmBlog

暂无认证

  • 4浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[abc] E - Rem of Sum is Num 公式推导+mp处理

*DDL_GzmBlog 发布时间:2021-10-21 21:58:22 ,浏览量:4

前言

传送门 :

推完公式 !

思路

区间和 用 前缀和处理

因此题目就变成求 有多少对 ( S [ i ] − S [ j ] ) % k = i − j (S[i] - S[j])\%k = i-j (S[i]−S[j])%k=i−j

即 : S [ i ] − S [ j ] = k ∗ a + i − j S[i] - S[j] = k*a + i-j S[i]−S[j]=k∗a+i−j ( a a a一个常数) S [ i ] − i − ( s [ j ] − j ) = k ∗ a S[i] - i - (s[j]-j) = k*a S[i]−i−(s[j]−j)=k∗a ( s [ i ] − i ) % k = ( s [ j ] − j ) % k (s[i]-i)\%k = (s[j]-j)\%k (s[i]−i)%k=(s[j]−j)%k

因此我们可以先预处理除一个 长度为 m i n ( k − 1 , n ) min(k-1,n) min(k−1,n)的区间 然后我们直接计算即可

CODE
#include 
using namespace std;
#define int  long long
#define ll long long
#define endl '\n'
const int N  = 2e5+10;
int x,f[N];
map mp;

void solve()
{
    int n,k;cin>>n>>k;

    for(int i=1;i>f[i];
        f[i] += f[i-1];
    }

    for(int i=1;i            
关注
打赏
1657615554
查看更多评论
0.0438s