社区讨论
暴力可过
P3293[SCOI2016] 美味参与者 5已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m1z0x444
- 此快照首次捕获于
- 2024/10/07 21:04 去年
- 此快照最后确认于
- 2025/11/04 17:40 4 个月前
如题,给暴力加了点小优化罢了。
CPP#pragma GCC target("avx,avx512vl,avx2")
#include <immintrin.h>
#include <algorithm>
#include <climits>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
constexpr int N = 2e5 + 100;
int n, T;
__m256i A[N >> 3];
int *a = (int*)A;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n >> T;
for (int i = 0; i != n; i++)
cin >> a[i];
while (T--)
{
static int b, x, l, r;
cin >> b >> x >> l >> r; l--;
__m256i Ans = _mm256_set1_epi32(0);
__m256i B = _mm256_set1_epi32(b);
__m256i X = _mm256_set1_epi32(x);
int ans = 0;
while (l & 7 && l < r)
{
ans = max(ans, b ^ (a[l] + x));
l++;
}
if (l == r)
{
cout << ans << '\n';
continue;
}
while (r & 7)
{
r--;
ans = max(ans, b ^ (a[r] + x));
}
if (l == r)
{
cout << ans << '\n';
continue;
}
for ( l >>= 3, r >>= 3; l < r; l++)
Ans = _mm256_max_epi32(Ans, _mm256_xor_si256(B, _mm256_add_epi32(A[l], X)));
for (int i = 0; i != 4; i++)
ans = max(ans, (int)max(Ans[i] >> 32, Ans[i] & 2147483647ll));
cout << ans << '\n';
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...