题意:给定n,k,l,接下来给出n个数,让你从n个数中选取k个数围成一圈,然后从这k个数中随意选出连续的m(m>=1&&m<=k)个数进行异或后得到[l,r]区间的所有值,让你求最大的r。

分析:关键问题是需要剪枝!

代码实现:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<set>
#include<vector> using namespace std; int n,k,L,R,a[],b[],id;
int visited[];
string str[] = {"", "", "", "", "", ""}; int check()
{
int i,j,temp[],tot=,t;
temp[tot++]=; for(i=;i<k;i++)//枚举所有的组合异或值
{
t=tot;
for(j=;j<tot;j++)
temp[t++]=b[i]^temp[j];
tot=t;
} for(i=;i<tot;i++)
visited[temp[i]]=id; for(i=L;i<=R;i++)
if(visited[i]!=id)
return ;
return ;
} void dfs(int x, int num)
{
int i,j;
if(num==k)
{
id++;
if(check()==)
return ;
string per = str[k-]; do
{
if(per[]!='')//这里去除了很多重复的,没加这句话500ms,加了之后100ms
break;
id++;
int temp[];
for(i=;i<k;i++)
{
temp[i]=b[per[i]-''-];
temp[i+k]=temp[i];
} for(i=;i<k;i++)
{
int flag=;
for(j=i;j<i+k;j++)
{
flag=flag^temp[j];
visited[flag]=id;
}
} if(visited[L]!=id)
continue;
i=L+;
while(visited[i]==id)
i++;
R=R>(i-)?R:(i-); }
while(next_permutation(per.begin(),per.end())); return ;
} for(i=x;i<n;i++)
{
b[num]=a[i];
dfs(i+,num+);
}
} int main()
{
int i;
while(scanf("%d%d%d",&n,&k,&L)!=EOF)
{
id=;R=;
memset(visited,-,sizeof(visited));
for(i=; i<n; i++)
scanf("%d",&a[i]);
dfs(,);
printf("%d\n",R);
}
return ;
}

hdu 4876(剪枝+暴力)的更多相关文章

  1. HDU 4876 ZCC loves cards(暴力剪枝)

    HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...

  2. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  3. HDU 5510 Bazinga 暴力匹配加剪枝

    Bazinga Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5510 ...

  4. HDU 6382 odds (暴力 + 剪枝优化)

    odds Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Subm ...

  5. hdu 5077 NAND(暴力打表)

    题目链接:hdu 5077 NAND 题目大意:Xiaoqiang要写一个编码程序,然后依据x1,x2,x3的值构造出8个字符.如今给定要求生成的8个字符.问 说Xiaoqiang最少要写多少行代码. ...

  6. HDU 5522 Numbers 暴力

    Numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5522 ...

  7. hdu 5726 GCD 暴力倍增rmq

    GCD/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Give you a sequence ...

  8. hdu 4291(矩阵+暴力求循环节)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4291 思路:首先保留求出循环节,然后就是矩阵求幂了. #include<iostream> ...

  9. HDU - 5306 剪枝的线段树

    题意:给定\(a[1...n]\),\(m\)次操作,0表示使\([L,R]\)中的值\(a[i]=min(a[i],x)\),其余的1是查最值2是查区间和 本题是吉利爷的2016论文题,1 2套路不 ...

随机推荐

  1. SpringMVC学习总结(七)——SpringMVC注解@..详解

    <context:component-scan/> 扫描指定的包中的类上的注解,常用的注解有: @Controller 声明Action组件@Service    声明Service组件  ...

  2. list, set操作

    def union_list(l1, l2): result = [] if not l1: result.extend(l2) return result if not l2: result.ext ...

  3. 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?

    在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...

  4. MongoDB驱动特性检查列表

    http://docs.mongodb.org/meta-driver/latest/legacy/feature-checklist-for-mongodb-drivers/ 1. 基本(Essen ...

  5. YII2 RBAC Admin User权限相关

    https://github.com/mdmsoft/yii2-admin/blob/master/docs/guide/configuration.md http://www.liuhaihua.c ...

  6. Spring中通配符

    一.加载路径中的通配符:?(匹配单个字符),*(匹配除/外任意字符).**/(匹配任意多个目录) classpath:app-Beans.xml 说明:无通配符,必须完全匹配   classpath: ...

  7. weka数据挖掘拾遗(三)----再谈如果何生成arff

    前一阵子写过一个arff的随笔,但是写完后发现有些啰嗦.其实如果使用weka自带的api,生成arff文件将变成一件很简单的事儿. 首先,可以先把特征文件生成csv格式的.csv格式就是每列数据都用逗 ...

  8. android布局 及 布局属性

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...

  9. 用Eclipse+ADT创建可运行项目,创建lib项目,引用一个lib项目

    Managing Projects from Eclipse with ADT In this document Creating an Android Project  创建可运行项目 Settin ...

  10. [HDOJ5583]Kingdom of Black and White(暴力)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5583 一个01串,求修改一个位置,使得所有数均为0或1的子串长度的平方和最大.先分块,然后统计好原来的 ...