中国大学生程序设计竞赛 (合肥) 异或密码
2017-08-07 12:03
267 查看
题目传送门
直接上代码 题解在代码里
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX = 1 << 12;
int dp[MAX];
int a[105];
int main()
{
int t;
scanf("%d",&t);
while(t--) {
memset(dp,0,sizeof(dp));
int n;
scanf("%d",&n);
for(int i = 0; i <n ; i++) {
scanf("%d",&a[i]);
dp[a[i]] = 1; //初始化达到 a[i] 长度为1
}
for(int l = 2; l <= n; l++) { //dp数组储存达到 ans1的情况下最长的长度
for(int i = 0; i < n-l+1; i++) {
int j = i+l-1;
int ans1 = a[i];
for(int k = i+1; k <= j; k++) {
ans1 = a[k]^ans1;
}
dp[ans1] = max(l,dp[ans1]);
}
}
int m;
scanf("%d",&m);
while(m--) {
int x;
scanf("%d",&x);
int ans = -1;
int i;
for(i = 0;; i++) { //i表示x 与左右两边的距离
if(i+x < MAX && dp[i+x]!=0) { //向右搜索最短距离
ans = max(dp[x+i],ans);
}
if(x-i > -1 && dp[x-i]!=0) { //同时向左搜索最短距离
ans = max(dp[x-i],ans);
}
if(ans != -1) //找到最短距离退出
break;
}
printf("%d\n",ans);
}
cout << endl;
}
}
直接上代码 题解在代码里
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX = 1 << 12;
int dp[MAX];
int a[105];
int main()
{
int t;
scanf("%d",&t);
while(t--) {
memset(dp,0,sizeof(dp));
int n;
scanf("%d",&n);
for(int i = 0; i <n ; i++) {
scanf("%d",&a[i]);
dp[a[i]] = 1; //初始化达到 a[i] 长度为1
}
for(int l = 2; l <= n; l++) { //dp数组储存达到 ans1的情况下最长的长度
for(int i = 0; i < n-l+1; i++) {
int j = i+l-1;
int ans1 = a[i];
for(int k = i+1; k <= j; k++) {
ans1 = a[k]^ans1;
}
dp[ans1] = max(l,dp[ans1]);
}
}
int m;
scanf("%d",&m);
while(m--) {
int x;
scanf("%d",&x);
int ans = -1;
int i;
for(i = 0;; i++) { //i表示x 与左右两边的距离
if(i+x < MAX && dp[i+x]!=0) { //向右搜索最短距离
ans = max(dp[x+i],ans);
}
if(x-i > -1 && dp[x-i]!=0) { //同时向左搜索最短距离
ans = max(dp[x-i],ans);
}
if(ans != -1) //找到最短距离退出
break;
}
printf("%d\n",ans);
}
cout << endl;
}
}
相关文章推荐
- HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)
- HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)
- 2016 CCPC 中国大学生程序设计竞赛 合肥赛区 总结
- hdu 5968 异或密码 2016ACM/CCPC合肥赛区现场赛H
- 2016年中国大学生程序设计竞赛(合肥)-重现赛(感谢安徽大学)(5/10)
- HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))
- HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969
- HDU 5969 最大的位或 【贪心】 (2016年中国大学生程序设计竞赛(合肥))
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1008 HDU 5968
- HDU 5969 最大的位或 【贪心】 (2016年中国大学生程序设计竞赛(合肥))
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961
- 2016年中国大学生程序设计竞赛(合肥) 题解小结 1001.传递 1003.朋友 1005.扫雷
- HDU5965--2016年中国大学生程序设计竞赛(合肥)
- HDU 5963 朋友 【博弈论】 (2016年中国大学生程序设计竞赛(合肥))
- 2016年中国大学生程序设计竞赛(合肥)-重现赛(感谢安徽大学) A E H I
- 异或密码---hdu5968(CCPC合肥,二分)
- 2016年 中国大学生程序设计竞赛合肥赛区(ccpc)解题报告
- 2016年中国大学生程序设计竞赛(合肥)-重现赛
- (2016年中国大学生程序设计竞赛(杭州)-重现赛) ArcSoft's Office Rearrangement 模拟