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... 虫洞 解题报告(搜索+强大剪枝+模拟)
这题可真是又让我找到了八数码的感觉...哈哈. 首先,第一次见题,没有思路,第二次看题,感觉是搜索,就这样写下来了. 这题我几乎是一个点一个点改对的(至于为什么是这样,后面给你看一个神奇的东西),让我 ...
随机推荐
- java构造函数也可以用private开头
private 构造函数一般用于Singleton模式,指的是整个应用只有本类的一个对象,一般这种类都有一个类似getInstance()的方法!下面是一个Singleton的例子:public cl ...
- 与数据库打交道的Adapter----SimpleCursorAdapter
http://www.cnblogs.com/wenjiang/p/3196486.html 程序员是这个世界上最神奇的职业,因为几乎所有其他职业的人都能转到该行来,只要他智力正常,有接受过正规的编程 ...
- JAVA HashMap详细介绍和示例
http://www.jb51.net/article/42769.htm 我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap. 第1部分 HashMa ...
- sql server查询时候注意的基本优化常识
1.在Where条件中尽量不要在=号左边进行函数.运算符.或表达式计算 2.在Where中尽量避免出现!=或<>操作符: 3.在Where中尽量避免对字段进行null值判定: 4.使用Li ...
- 对 Xcode 菜单选项的详细探索(转)
转自 http://www.cnblogs.com/dsxniubility/p/4983614.html 本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到 ...
- 使用gSoap规避和修改ONVIF标准类型结构的解析
ONVIF/gSoap依赖关系及问题 ONVIF是一组服务规范,标准参考 gSoap是一套基于实现SOAP通信接口的工具链 即是,当我们需要访问ONVIF的Web Service或实现对ONVIF部分 ...
- 3 - testng.xml
TestNG的调用有以下几种方式: testng.xml ant 命令行 这部分主要介绍testng.xml的格式. 当前testng.xml的DTD(文档类型定义(Document Type Def ...
- 使用Raphael 画图(三) 事件 (javascript)
这章展示事件例子. 下图是官方API的事件: 例子: var butt1 = paper.set(); var a1 = paper.circle(24.833, 26.917, 26.667).at ...
- Windows Open with Sublime Text
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text] "Icon&q ...
- Mvc controller单元测试 Mock Url对象
被测试Action 包含有Url对象的代码: data = new data { title = ds.Name, icon = "folder", attr = new { id ...