A题: http://blog.csdn.net/qq_37257079/article/details/79604245
B题: http://www.cnblogs.com/a249189046/p/8598229.html
C题: https://git-dwh.github.io/2018/03/18/%E5%9B%9B%E6%A0%A1%E8%81%94%E8%B5%9B2-C-Array-Gcd/#more
D题: https://git-dwh.github.io/2018/03/18/%E5%9B%9B%E6%A0%A1%E8%81%94%E8%B5%9B2-D-D%E5%95%86%E5%BA%97/#more
E题:
int l,r;sf("%d%d",&l,&r);
ll ans=1;
for(int i=l;i<=r;i++)
ans=ans*a[i]%p;
pf("%lld\n",ans);
F题: http://blog.csdn.net/fo0old/article/details/79594309
G题:
本题可以离线处理。
将所有的边按权值从小到大排序,将询问按权值从小到大排序,维护一个并查集,顺序处理排序后的询问。对于每一个询问,将权值小于等于它的边全部加入,维护集合大小,如果(x,y)不在同一个集合,那么增加的答案就是s[x]*s[y],s表示集合的大小。注意long long