P2671 [NOIP2015 普及组] 求和

 

>>>x+z/2 -> x z same 奇偶

>>>∑ i*(s[c[i]][i%2]*x[i]+  sum[ c[i] ][i%2] )

#include <cmath>
#include <ctime>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>//Í·Îļþ×¼±¸
using namespace std;

int s[100005][2],sum[100005][2],c[100005],x[100005];//¶¨Òå¶þάÊý×é·½±ã·Ö×é
int n,m,ans;
int main(){
    scanf ("%d %d",&n,&m);//ÆäʵmûÓÐʲôÓô¦
    for (int i=1;i<=n;i++){
        scanf ("%d",&x[i]);
    }
    for (int i=1;i<=n;i++){
        scanf ("%d",&c[i]);
        s[c[i]][i%2]++;//Çó³öÕâ¸ö·Ö×éÖÐÓжàÉÙ¸öÊý
        sum[c[i]][i%2]=(sum[c[i]][i%2]+x[i])%10007;//ÊÂÏÈÇó³öÀۼӺͣ¬×¢Ò⣬Ҫmod10007
    }
    for (int i=1;i<=n;i++){
        ans=(ans+i*((s[c[i]][i%2]-2)*x[i]%10007+sum[c[i]][i%2]))%10007;//ÒÀ´ÎÈ»ºó´úÈ룬עÒ⣬ҲҪmod10007
    }
    printf ("%d\n",ans);//×îºóÊä³ö
    return 0;
}
View Code

 

 
 
 
posted @ 2023-08-07 13:13  JMXZ  阅读(6)  评论(0)    收藏  举报