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; }