题意:
给你n个点,每个点有自己的权值,你每次走一步,从1到n循环走,走到这个点上,你的总和加上这个权值。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+100;
typedef long long LL;
map<LL,LL>vis,name;
vector<LL>dis[N];
LL sum[N];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
name.clear();
vis.clear();
memset(sum,0,sizeof(sum));
for(int i=0;i<=5e5+100;i++)
{
dis[i].clear();
}
int m,n;
scanf("%d %d",&n,&m);
for(int i=1; i<=n; i++)
{
int x;
scanf("%d",&x);
sum[i]=sum[i-1]+x;
if(vis[sum[i]]==0)
{
vis[sum[i]]=i;
}
}
if(sum[n]!=0)
{
int cnt=1;
for(i