Square(强大的剪枝)
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2410
/*
题意;
给出一定数量的棍子用这些棍子组成一个正方形
要求把这些棍子全部用完
能组成正方形输出yes否则输出no
分析;
正方形的边长都相同
即是找出四条边长一样的边
第一 : 周长必须是4的倍数
第二 : 最长的木棍必须小于等于边长
第三:木棍重大到小排序 找边是从大向小的开始找,不必每次都从头找一遍
*/
include
include
include
using namespace std;
int stick[25];
int vis[25];
int op=0,bianZhang ;
int m;
bool myCmp(int a,int b)
{
return a>b;
}
void dfs(int cur,int sum,int start)
{
if(cur==3)
{
op=1;
return ;
}
if(op)return ;
for(int i=start; i<m; i++)
{
if(vis[i]==1)continue;
if(sum+stick[i]==bianZhang)
{
if(op)return;//如果没有 超时
vis[i]=1;
dfs(cur+1,0,0);//找到一条边 准备找下一条
vis[i]=0;
}
else if(sum+stick[i]<bianZhang)//还没有组成一条边
{
if(op)return;//如果没有 超时
vis[i]=1;
dfs(cur,sum+stick[i],i);
vis[i]=0;
}
}
return ;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
memset(stick,0,sizeof(stick));
memset(vis,0,sizeof(vis));
op=0;
int sum=0;
for(int i=0; i<m; i++)
{
scanf("%d",&stick[i]);
sum+=stick[i];
}
if(sum%4!=0||m<4)
{
printf("no\n");
continue;
}
sort(stick,stick+m,myCmp);
bianZhang=sum/4;
if(stick[0]>bianZhang)
{
printf("no\n");
continue;
}
dfs(0,0,0);
if(op )
printf("yes\n");
else
printf("no\n");
}
return 0;
}
Square(强大的剪枝)的更多相关文章
- [Vijos1308]埃及分数(迭代加深搜索 + 剪枝)
传送门 迭代加深搜索是必须的,先枚举加数个数 然后搜索分母 这里有一个强大的剪枝,就是确定分母的范围 #include <cstdio> #include <cstring> ...
- [CSP-S模拟测试]:physics(二维前缀和+二分+剪枝)
题目传送门(内部题26) 输入格式 第一行有$3$个整数$n,m,q$.然后有$n$行,每行有一个长度为$m$的字符串,$+$表示正电粒子,$-$表示负电粒子.然后有$q$行,每行$2$个整数$x,y ...
- kylin剪枝优化的两种方式
1.衍生维度. 在kylin中,如果某些维度都属于同一种类型,且数量较多,可以考虑做成衍生维度. 衍生维度就是将一批维度做成一张维度表,只在源表中保留这张表的外键,这样预处理的时候,就只会处理这个外键 ...
- ACdream 1726 A Math game
深搜.不过有一个强大的剪枝.就是假设之后的全部用上都不能达到H,则return. if (A[n]-A[x-1]+summ< H) return; //A[n]表示前nx项和 #include& ...
- 舞蹈链(DLX)
舞蹈链(DLX) Tags:搜索 作业部落 评论地址 一.概述 特别特别感谢这位童鞋His blog 舞蹈链是一种优美的搜索,就像下面这样跳舞- 舞蹈链用于解决精确覆盖或者重复覆盖的问题 你可以想象成 ...
- Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 5. Dynamic Programming
10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=sho ...
- 1317: Square(DFS+剪枝)
Description Given a set of sticks of various lengths, is it possible to join them end-to-end to form ...
- HDU1518 Square(DFS,剪枝是关键呀)
Square Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submi ...
- USACO 1.3... 虫洞 解题报告(搜索+强大剪枝+模拟)
这题可真是又让我找到了八数码的感觉...哈哈. 首先,第一次见题,没有思路,第二次看题,感觉是搜索,就这样写下来了. 这题我几乎是一个点一个点改对的(至于为什么是这样,后面给你看一个神奇的东西),让我 ...
随机推荐
- win2008 64位下.net 无法访问oracle
这两天换了台新机子,就想弄个新系统win2008 64bit来测试下,也尝尝新鲜,结果是碰的头破血流啊,哈哈就像挖宝似的 环境:win2008 64bit + IIS7+.net2.0 +ORACLE ...
- 自定义图文混排视图MyImageTextView
http://blog.csdn.net/xujunfeng000/article/details/36399339?utm_source=tuicool&utm_medium=referra ...
- Android 安全性和权限
自定义权限 permission <permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT& ...
- 如何用visual studio控件(repeater)绑定数据库(SQL server)信息并显示
今天学习了下如何间接绑定数据库网上看了很多信息,都云里雾里,没有图片说明,初学者完全看不懂,我自己做了一个DEMO,相信可以帮到大家! 一.建立数据库,并构建表信息,我的表信息如下: 表中的数据在数据 ...
- Struts2默认拦截器配置
http://blog.csdn.net/axin66ok/article/details/7321430
- Elasticsearch学习1--head插件安装
1.简要介绍 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序. 2.最近尝试学习elasticsearch,查了一些资料,但 ...
- jQuery慢慢啃之选择器(二)
1.$("#myDiv");ID匹配一个元素 <span id="foo[bar]"></span> $("#foo\\[ba ...
- 《service》-“linux命令五分钟系列”之二
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- Apache配置完虚拟主机后,使用Chrome访问localhost还是默认目录htdocs
Chrome 解析DNS出错,这个错误比较罕见,甚至说有点奇特.今天在使用Apache配置虚拟主机时,出现了一个非常奇怪的现象.我按照配置的步骤配置虚拟主机,如下 配置虚拟主机的步骤如下: 1. 启用 ...
- phpstorm IDE编辑器使用手记
a.选项卡限制问题 突破打开的文件选项卡个数限制:默认安装后的phpstorm打开的文件个数是有限制的,默认是10个.也就是最多同时打开10个文件进行编辑. 超过10个就会自动关闭前面最先打开的文件. ...