哈希求调
  • 板块P2843 暗杀
  • 楼主wxzzzz
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/21 12:31
  • 上次更新2023/11/21 12:33:24
查看原帖
哈希求调
749630
wxzzzz楼主2023/11/21 12:31
#include <bits/stdc++.h>
using namespace std;
int n, k, ans, s[35];
map<unsigned long long, int> pos;
int main() {
    cin >> n >> k;

    for (int i = 1, x; i <= n; i++) {
        cin >> x;
        unsigned long long hs = 0;

        for (int j = 1; j <= k; j++)
            if (x >> j - 1 & 1)
                s[j]++;

        for (int j = 2; j <= k; j++)
            hs = hs * 131 + s[j] - s[j - 1];

        if (!pos[hs])
            pos[hs] = i;
        else
            ans = max(ans, i - pos[hs]);
    }

    cout << ans;
    return 0;
}
2023/11/21 12:31
加载中...