cf B. Dima and To-do List

http://codeforces.com/contest/366/problem/B

从0到k枚举起点,然后i+k判断是不是i+k>=n如果是i=(i+k)%n;否则i=i+k;

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 200010
using namespace std;
const int inf=<<; int n,k;
int a[maxn];
bool vis[maxn]; int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=; i<n; i++)
{
scanf("%d",&a[i]);
}
__int64 min1=inf;
int c;
for(int j=; j<k; j++)
{
__int64 sum=(__int64)a[j];
int i=j;
while()
{
if(i+k>=n)
{
i=(i+k)%n;
}
else i=i+k;
if(i==j) break;
sum+=a[i];
}
if(sum<min1)
{
min1=sum;
c=j;
}
}
printf("%d\n",c+);
}
return ;
}
上一篇:WPF访问UserControl的自定义属性和事件


下一篇:图像分割之(三)从Graph Cut到Grab Cut