poj 2362 Square(dfs, 剪枝)

HDU1518 & POJ2362 & ZOJ1909 Square(DFS,剪枝是关键呀) Square Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 9   Accepted Submission(s) : 4 Problem Description Given a set of sticks of v 阅读详情
Square
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 23828 Accepted: 8253

Description

Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?

Input

The first line of input contains N, the number of test cases. Each test case begins with an integer 4 <= M <= 20, the number of sticks. M integers follow; each gives the length of a stick - an integer between 1 and 10,000.

Output

For each case, output a line containing "yes" if is is possible to form a square; otherwise output "no".

Sample Input

3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5

Sample Output

yes
no
yes

Source

Waterloo local 2002.09.21


思路:重在剪枝


代码:

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 25;
int a[maxn], n, avg, flag, have;
bool book[maxn];
void dfs(int fin, int num, int cur)
{
    if(flag) return ;
    if(fin == 4) { flag = 1; return ; }
    if(num == avg) { dfs(fin+1, 0, 0); return; }
    for(int i = cur; i < n; i++)
    {
        if(num+a[i] > avg) return ;<span style="white-space:pre">	</span>//剪枝2,因为对木棍排过序,搜到该棍过长,那后面的肯定更加长,不用搜了
        if(!book[i] && num+a[i] <= avg)
        {
            book[i] = 1;
            dfs(fin, num+a[i], i+1);
            book[i] = 0;
            if(flag) return ;<span style="white-space:pre">		</span>//剪枝3,一搜到就返回
        }
    }
}
int main(void)
{
    int t, maxlen;
    cin >> t;
    while(t--)
    {
        memset(book, 0, sizeof(book));
        avg = flag = maxlen = 0;
        scanf("%d", &n);
        for(int i = 0; i < n; i++) scanf("%d", &a[i]), avg += a[i], maxlen = max(maxlen, a[i]);
        if(avg % 4 || maxlen > avg/4) { printf("no\n"); continue ; }<span style="white-space:pre">	</span>//剪枝1,若最长的木棍大于边长,边长不能被4整除,肯定不行
        sort(a, a+n);<span style="white-space:pre">	</span>
        avg /= 4;
        dfs(0, 0, 0);
        if(flag) printf("yes\n");
        else printf("no\n");
    }
    return 0;
}



Agv、Rgv 车辆控制调度系统开发第一篇 Agv、Rgv 车辆控制调度系统第一篇为什么要做这个系统先看作品从头讲起算法讲解编程语言从哪里开始继续深入预告 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公司买别人家的调度系统要几十万,还只是一个项目的实施,从那天起我就决定自己写一套,用了一年的时间写出来后,才发现根本卖不掉,卖不掉就卖不掉吧,反正我现在已经吧写这套系统当成了一种乐趣,如果不让我写了我反而不适应,但是没有人欣赏我的成果我反而很难受,所以决定吧这个系统的创作过程,写下来,给后面的人一些建议,少走点弯路。 先看作品 从头讲起 在 阅读详情

相关推荐

Carla自动驾驶仿真一:快速安装与运行Carla

网上有不少的Windows版本的Carla的安装教程,这里简单记录下自己安装过程,写的也比较详细,基本不用看其他文章。

zataji的博客 2万+

关于斐波那契数列的整除问题,

已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13,21,34…,现在的问题是想知道f(n)的值是否能被3和4整除,你知道吗? 对应每组数据n,若 f(n)能被3整除,则输出“3”; 若f(n) 能被4整除,则输出“4”;如果能被12整除,输出“YES”;否则输出“NO”。 ...

weixin_46130146的博客 1968

从入门到精通:激光器恒流驱动电路的设计与选型指南

本文深入解析了激光器恒流驱动电路的设计与选型。文章从基础电路原理讲起,对比了简易恒流源与高精度运放反馈方案的优劣,并重点阐述了如何为不同功率与精度要求的激光器项目选择合适的恒流驱动方案,强调了恒流源对于保障激光器稳定工作、防止热失控及延长寿命的核心作用。

grafana6viz的博客 711

一台微型计算机的字长为32位,在32位的计算机中,一个字长等于_____________个字节。 - 试题答案网问答...

相关题目与解析在32位计算机中,一个字长所占的字节数为A.1B.2C.4D.8某计算机的字长为4个字节,这表示()。一台微型计算机的字长为4个字节,它表示()。下列关于计算机基础知识的叙述中,不正确的是()A.32位微机的字长为两个字节B.字长是标志计算若一台计算机的字长为4个字节,这意味着它()。●不同计算机中(6)的长度是固定不变的。设计算机的字长是4个字节,意味着(7)。(6)A.字段B.字...

weixin_29384119的博客 940

RV1126 MIPI CSI-2驱动RGB888图像采集的V4L2实战解析

本文详细解析了在RV1126平台上通过MIPI CSI-2接口采集RGB888格式图像的完整V4L2实战流程。核心内容包括设备树(DTS)配置、内核驱动适配、Media Controller链路调试,以及使用v4l2-ctl工具进行图像抓取与验证的方法,旨在帮助开发者打通从硬件连接到稳定采集RGB888图像数据的关键环节。

weixin_29161719的博客 166

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6566

c++3------类,面向对象的三大特性

一、c++中的类即可用class也可用struct(1)类中的变量成为类中的属性或成员变量;(2)类中的函数成为方法或类中的行为或成员函数;1、类的定义:法1:类的声明和定义全部放在类体中class className { // 类体:由函数和变量组成 }; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称...

xuruhua的博客 9678

windows中搭建sonic云真机环境/云真机环境搭建-基于docker容器部署

基于Windows系统搭建Sonic远程云真机环境实现通过浏览器操作手机端系统

雾林小妖的博客 1017

2002年9月全国计算机等级考试二级C语言笔试试题

2002年9月全国计算机等级考试二级C语言笔试试题 更新于:2007年9月19日 念时 一、选择题((1)-(40)题每小题1分,(41)-(50)题每小题2分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,...

aiqixiao2017的博客 327

OpenClaw人人养虾:接入即时通讯平台Zalo

通过 Zalo Official Account(OA,官方账号)API,可以将 OpenClaw 接入 Zalo,实现面向越南用户的自动化客服和互动。

王国平的博客 437

【教程4>第5章>第19节】基于Gardner环的位同步系统MATLAB仿真与带时偏基带数据导出

由于在FPGA中,时偏的影响主要是由系统收发两端晶振的不同步带来的,所以在仿真测试阶段,很难直接通过FPGA来模拟这个因素,所以我们采用MATLAB模拟带时偏的基带输入信号,并将其导出,由FPGA调用作为测试信号源。可以看到,同步之后(图3)相对于带时偏的基带信号(图2),其更接近标准的数据(图1),且抖动较小。订阅过的朋友可以复习下这个课程,没有订阅的朋友,也可以直接复制如下的程序进行仿真测试。上述程序中,加入时偏的基带信号,通过子函数。同步之后,可以恢复出标准的QPSK星座图。

FPGA/MATLAB学习教程/源码/项目合作开发 522

POJ2362-Square

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 大致题意: 给定一堆不定长度的小棒子,问他们能否构成一个正方形。 解题思路: POJ1011的热身题,D...

ζёСяêτ - 小優YoU 4573

基于Simulink的伺服电机位置闭环控制仿真

本文带你从零构建了伺服电机位置闭环控制系统​ 的完整Simulink仿真模型,实现了:✅ 搭建PMSM伺服电机、逆变器、机械臂负载的主电路与编码器反馈模型;✅ 用MATLAB Function实现三环控制(位置环PID、坐标变换、电流环PI);✅ 验证阶跃定位(稳态误差0.002°、响应0.08s)与正弦跟踪(误差0.008°)的高性能;✅ 对比开环控制,明确位置闭环在精度、响应、抗扰上的优势;✅ 理解“三环嵌套+反馈校正”的核心思想(精密定位的工程实现)。核心收获。

amy_mhd的博客 173

POJ 2362 Square(DFS+剪枝)

POJ 2362 Square Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 27083 Accepted: 9158 Description Given a set of sticks of various lengths, is it possible to join them end-to-end...

ZQYnn's blog 396

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【DFS + 剪枝】POJ 2362 Square

这段时间要沉迷刷题一段时间了,就让优快云陪我一起吧! 一、题目大意 这个题目的大致意思就是给定多个长度为M的数组,每个数组代表一系列的木棍,每个数组元素代表木棍长度,求问每个数组是否能够首尾相接,连接成一个正方形。如果可以的话输出yes,否则输出no 二、题目思路以及AC代码 一开始我以为这题就是简单的dfs,dfs的思路也很简单,就是首先根据输入数组求解出如果能合成正方形的边长,然后分4次...

Johnson的博客 238

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

POJ 2362 Square(DFS回溯构造)

POJ2362 Square(DFS回溯构造) http://poj.org/problem?id=2362 题意:给你M根长度可能不同的棍子,问你用着M根棍子能否拼成一个正方形. 分析:首先将M根棍子的总长sum求出,sum%4必须==0且任意一个棍子的长度        用vis[i]数组表示当前第i根棍子是否被使用了.        然后用dfs来判断能否构成正方形的三边即可.其中

code 2514

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 2362 HDOJ 1518 Square DFS剪枝

Square Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 18949   Accepted: 6567 Description Given a set of sticks of various lengths, is it possible to join th

kdwycz的刷题空间 861

poj2362 Square DFS剪枝

Square Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22779   Accepted: 7894 Description Given a set of sticks of various lengths, is it possible to join

EventQueue的博客 570

Square poj2362深度优先搜索+剪枝

1.题目原文 Square Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 24028   Accepted: 8300 Description Given a set of sticks of various lengths, is it possibl

相思作坊半世离殇的博客 426

poj 2362 || zoj 1909 Square (DFS+剪枝)

题目链接:http://poj.org/problem?id=2362 题目大意:给出M条筷子,问是否能够拼凑成正方形,是则打印yes,否则no. 解题思路:范围4                   剪枝:1.总数不能被4整除,直接打印 no;                              2.最长的那个筷子大于平均数,直接打印 no;

ンZee的解题报告 1198

POJ 2362 Square (DFS +剪枝)

Square

Tc的专栏 1172

POJ 2362 Square-(DFS+ 剪枝)

题目链接 题目大意:     给定一组木棍长度的数据,求是否能拼成一个正方形. 解题思路:     简单的DFS遍历就好了,但是本题要考虑剪枝     1)当所有木棍长度和sum, 需要满足sum%4 = 0,否则拼不成正方形。     2)最长的木棍要满足小于边长side = sum / 4。     在1)2)条件下进行DFS遍历,可以减小时间复杂度。

小梁的编程学习之旅 331

poj 2362 Square (dfs+剪枝)

2362 -- Square   跟1011的Sticks差不多,不过这里是问给出的长度能否拼成一个正方形。这题数据比较小,不过对剪枝的要求还是差不多的。 主要的剪枝是: 1.由大到小排序后,在拼当前边的第一条棍子的时候必须选用当前没有用过的棍子中最长那条 2.在搞同一条边的时候,下一条棍子不会比之前选了的大 3.同一长度的棍子只搜一次 然后就是代码: 1 #include...

weixin_30790841的博客 102

POJ-2362 - Square (DFS + 剪枝)

Square 题目链接:A - Square POJ - 2362 题意 给你n个小木棍,要求全部用上,能否组成一个正方形。 思路 我原先的方法,非常非常暴力,就开个dfs,来记录每个状态的值,反正每个木棍都是要组成一个边的,于是我就枚举它放边的过程,复杂度为4^20次方吧,果然会炸。 有些基本的优化就不谈了,比如最长的边大于平均边,边总和不是4的倍数。。。 现在考虑枚举...

帅帅的博客 295

ZOJ1909 POJ2362 HDU1518 Square,很经典的DFS+剪枝!

这题很经典的DFS+剪枝!我做了很久,DFS的回溯一直很混乱后来参考了这篇解题报告后顿时茅塞顿开!解题报告请猛击我!我的报告里面有对应的剪枝解释 /******************************************************************************* # Author : Neo Fung # Email : neosfun

Neo Fung的专栏 1634

DFS POJ 2362 Square

题目传送门 1 /* 2 DFS:问能否用小棍子组成一个正方形 3 剪枝有3:长的不灵活,先考虑;若根本构不成正方形,直接no;若第一根比边长长,no 4 这题是POJ_1011的精简版:) 5 */ 6 #include <cstdio> 7 #include <iostream> 8 #incl...

weixin_30363509的博客 76
上一篇: poj 3104 Drying(二分)
下一篇: poj 3984 迷宫问题(bfs, 记录路径)
cillyb
博客等级 码龄11年 225粉丝 497原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值