hdu5968异或密码(暴力)

xiaoxiao2021-02-28  9

思路:

数据小可以直接暴力枚举(以后看题得先看数据=。=!,不然看题时容易想复杂),把序列的每个连续序列的异或值都存进数组里,对每个询问直接暴力比较就好。

代码:

#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 0x3f3f3f3f; const ll INFF = 0x3f3f3f3f3f3f3f3f; const ll mod = 1e9+7; const int maxn = 1e5+7; int a[110],b[110][110]; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); memset(b,0,sizeof(b)); for(int i = 0;i<n;i++) { scanf("%d",&a[i]); } for(int i = 1;i<=n;i++) { for(int j = 0;j<=n-i;j++) { for(int k = 0;k<i;k++) { b[i][j]^=a[j+k]; } } } int m; scanf("%d",&m); ll minn = INFF; while(m--) { int num; minn = INFF; scanf("%d",&num); int l = 0; for(int i = n;i>=1;i--) { for(int j = 0;j<=n-i;j++) { if((ll)abs(b[i][j]-num)<minn) { minn = (ll)abs(b[i][j]-num); l = i; } } } printf("%d\n",l); } printf("\n"); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-800098.html

最新回复(0)