hdu 4876(剪枝+暴力)
题意:给定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(剪枝+暴力)的更多相关文章
- HDU 4876 ZCC loves cards(暴力剪枝)
		
HDU 4876 ZCC loves cards 题目链接 题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个 ...
 - hdu 4876 ZCC loves cards(暴力)
		
题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...
 - HDU 5510 Bazinga 暴力匹配加剪枝
		
Bazinga Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5510 ...
 - HDU 6382 odds (暴力 + 剪枝优化)
		
odds Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Subm ...
 - hdu 5077 NAND(暴力打表)
		
题目链接:hdu 5077 NAND 题目大意:Xiaoqiang要写一个编码程序,然后依据x1,x2,x3的值构造出8个字符.如今给定要求生成的8个字符.问 说Xiaoqiang最少要写多少行代码. ...
 - HDU 5522 Numbers 暴力
		
Numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5522 ...
 - hdu 5726 GCD 暴力倍增rmq
		
GCD/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Give you a sequence ...
 - hdu 4291(矩阵+暴力求循环节)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4291 思路:首先保留求出循环节,然后就是矩阵求幂了. #include<iostream> ...
 - HDU - 5306 剪枝的线段树
		
题意:给定\(a[1...n]\),\(m\)次操作,0表示使\([L,R]\)中的值\(a[i]=min(a[i],x)\),其余的1是查最值2是查区间和 本题是吉利爷的2016论文题,1 2套路不 ...
 
随机推荐
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
			
前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及M ...
 - CentOS7-64bit 编译 Hadoop-2.5.0,并分布式安装
			
摘要 CentOS7-64bit 编译 Hadoop-2.5.0,并分布式安装 目录[-] 1.系统环境说明 2.安装前的准备工作 2.1 关闭防火墙 2.2 检查ssh安装情况,如果没有则安装ssh ...
 - 文件夹属性中只有"常规"解决办法
			
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shellex\PropertySheetHandlers] [HK ...
 - Html 全屏切换效果
			
来源 http://www.imooc.com/learn/374 pageswitch.js (function ($) { var defaults = { 'container': '#cont ...
 - C# GUID的使用
			
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...
 - Java 互联网工程师要具备哪些技能或技术?
			
Java技术的世界是个无底洞,永远也学不完,不废话了,我就简单的说一下自己的看法(偏重Java方面,什么html.css.js这些不在这次的讨论之内,虽然JavaServer开发有时候也都需要懂点): ...
 - [HDOJ4325]Flowers(树状数组 离散化)
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4325 关于离散化的简介:http://blog.csdn.net/gokou_ruri/article ...
 - Java深入学习之--初始化
			
目录 1.方法重载 2.默认构造器 3.this关键字 4.static关键字 5.初始化 1.方法重载 java中方法重载的意思是在同一个类中可以存在方法名相同的方法,而方法的参数类型不同,即使两个 ...
 - Android应用加入微信分享
			
一.申请你的AppID http://open.weixin.qq.com/ 友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二.官网下载libammsdk.jar包 ht ...
 - poj 3353 Road Construction tarjan 边双联通分支 缩点+结论
			
题意:一个连通的无向图,求至少需要添加几条边,救能保证删除任意一条边,图仍然是连通的. 链接:http://poj.org/problem?id=3352 思路:边的双连通图.其实就是要求至少添加几条 ...