Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

纪念1A(附代码)

Posted by louchiheng at 2016-04-02 12:44:44 on Problem 3274
#include<vector>
#include<cstdio>
#include<string.h>
using namespace std;
const int prime=500;
vector<int>ha[prime];
int n,m,i,t,su,tot,ma=0,c[100001][31],sum[100001][31],j,k,x;
long long lo;
bool cmp(int x,int y)
{
	t=0;
	while(c[x][t]==c[y][t]&&t<m)t++;
	return t==m?1:0;
}
int main()
{
	scanf("%d%d",&n,&m);
	memset(sum,0,sizeof(sum));
	memset(c,0,sizeof(c));
	for(i=1;i<=n;++i)
	{
		scanf("%lld",&lo);
		for(j=0;j<m;++j)
		{
			x=lo%2;
			lo/=2;
			sum[i][j]=sum[i-1][j]+x;
		}
    }
	for(i=1;i<=n;++i)
	{
		su=0;
		tot=0;
	    for(j=0;j<m;++j)
		{
		    c[i][j]=sum[i][j]-sum[i][0];
		    if(!c[i][j])tot++;
	        su=(su+c[i][j])%prime;
	    }
	    if(tot==m&&i>ma)ma=i;
	    if(su<0)su*=-1;
		ha[su].push_back(i);
	}
	for(i=0;i<prime;++i)
    {
        if(ha[i].size()>1)
	    for(j=0;j<ha[i].size()-1;++j)
	    for(k=j+1;k<ha[i].size();++k)
	    if(cmp(ha[i][j],ha[i][k])&&ha[i][k]-ha[i][j]>ma)ma=ha[i][k]-ha[i][j];
    }
	printf("%d\n",ma);
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator