[BZOJ3243][NOI2013]向量内积(STL暴力)

题目:

我是超链接

题解:

哇这个题用bitset直送50啊,k=2可以搞一搞,然后k=3小的也可以弄,这样有80啦
行了暴力我就很满意了
正解好像有随机化,挖坑待填

代码:

80pts

#include <bitset>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=200005;
bitset<105>a[N],sb;
vector<int>b[N];
int main()
{
    int n,d,k;scanf("%d%d%d",&n,&d,&k);
    if (k==2)
    {
        for (int i=1;i<=n;i++)   
          for (int j=1;j<=d;j++)
          {
            int x;scanf("%d",&x);
            x%=k; a[i][j]=x;
          } 
        for (int i=1;i<=n;i++)
          for (int j=i+1;j<=n;j++)
          {
            sb=a[i]&a[j];
            if (sb.count()%k==0) {printf("%d %d",i,j);return 0;}
        }
        printf("-1 -1");
    }else 
    {
        for (int i=1;i<=n;i++)   
          for (int j=1;j<=d;j++)
          {
            int x;scanf("%d",&x);
            x%=k; b[i].push_back(x);
          } 
        for (int i=1;i<=n;i++)
          for (int j=i+1;j<=n;j++)
          {
            int now=0;
            for (int l=1;l<=d;l++)
            {
                now=now+b[i][l-1]*b[j][l-1];
                now%=k;
            } 
            if (now==0) {printf("%d %d",i,j);return 0;}
        }
        printf("-1 -1");
    }
}

猜你喜欢

转载自blog.csdn.net/blue_cuso4/article/details/80526968