关于昨天 CF 的 F题
  • 板块学术版
  • 楼主Albert_Wei
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/7/26 13:09
  • 上次更新2023/11/3 07:35:14
查看原帖
关于昨天 CF 的 F题
676634
Albert_Wei楼主2023/7/26 13:09

我赛时写了一个比较神奇的做法

#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main() {
  int tt;
  cin >> tt;
  while (tt--) {
    int n, k;
    cin >> n >> k;
    vector<pair<int, int> > a(n);
    for (int i = 0; i < n; i++) cin >> a[i].first;
    for (int i = 0; i < n; i++) a[i].second = i + 1;
    sort(a.begin(), a.end());
    vector<pair<int, int> > sk;
    for (int i = 0; i < n - 1; i++)
      sk.push_back(make_pair(a[i].first ^ a[i + 1].first, i));
    sort(sk.begin(), sk.end());
    cout << a[sk[0].second].second << " " << a[sk[0].second + 1].second << " " << 
	        (((1 << k) - 1) ^ (a[sk[0].second].first & a[sk[0].second + 1].first)) << endl;
  }
  return 0;
}

这个做法是否正确?如何证明?

2023/7/26 13:09
加载中...